XSS检测客户端环境,javascript 检测客户端文件、系统环境。

xss后续利用中,可能需要检测客户端环境,比如浏览器版本,是否安装360、杀毒软件、java版本、某些系统文件等……

可以利用javascript来检测这些,很多年前就开始有网马加入这些功能了,以实现“智能挂马”,这里汇总下……


1、User-Agent

HTTP 头 User-Agent 中可以获取很多信息,可以参阅本站另外几篇文章:

【CSRF】基于图片方式(<img)的 DDOS、CC、会话劫持以及刺探用户信息

【Asp原创】Asp超详细显示客户端系统信息

【Asp】ASP获取客户端/服务器相关信息

【Asp】Asp超精准判断客户端浏览器类型

【Asp】判断客户端系统和浏览器类型以及版本

2、IE 下面一般可以利用 IPC$、RES 协议或者 activeX 检测

RES:

注意:Microsoft RES 协议生效浏览器范围:IE 4.0 --> IE 6.0

<img src="res://C:\Program Files\ESET\ESET NOD32 Antivirus\egui.exe/gif/120" onerror="javascript:alert('no nod32')">

IPC$:

<script type="text/javascript">
window.onerror = function(){alert("nod32");}
</script>
<script src="\\127.0.0.1\c$\Program Files\ESET\ESET NOD32 Antivirus\egui.exe"></script>

activeX:

<script type="text/javascript">
var Is360;
var bFilter360=false;
if(bFilter360)
{
    try {
        var g;
        var glworld=new ActiveXObject("360SafeLive.Update");
    }
    catch(g){};
    finally {
        if(g=="[object Error]") {
            Is360 = "Not find 360";
        }
        else {
           Is360 = "Find 360";
            //window.location="about:blank";
        }
    }
}
</script>

利用UA和javascript的navigator对象及res协议就可以实现IP、操作系统、浏览器版本、flash版本、java版本、是否装特定软件等的检测。

收集一些常用软件的clsid再javascript检测。

示例程序若干:

JavaScript 利用 User-Agent 判断浏览器类型:

<HTML>
<SCRIPT LANGUAGE="JavaScript">
<!--
	function CheckBrowser() { //判断浏览器类型
		if (navigator.userAgent.indexOf("MSIE") > 0) {
			return "MSIE";
		}
		if (isFirefox = navigator.userAgent.indexOf("Firefox") > 0) {
			return "Firefox";
		}
		if (isSafari = navigator.userAgent.indexOf("Safari") > 0) {
			return "Safari";
		}
		if (isCamino = navigator.userAgent.indexOf("Camino") > 0) {
			return "Camino";
		}
		if (isMozilla = navigator.userAgent.indexOf("Gecko") > 0) {
			return "Gecko";
		}
	}
	document.write("<font color=#ff0000>您的浏览器类型为:" + CheckBrowser() + "</font><br>");
-->
</SCRIPT>
</HTML>

利用RES协议检测杀毒软件是否存在:

<HTML>
<SCRIPT LANGUAGE="JavaScript">
<!--
//利用RES协议检测杀毒软件是否存在
//Microsoft RES 协议生效浏览器范围:IE 4.0 --> IE 6.0
function ErrorSilent() { //屏蔽错误
	return true;
}
window.onerror = ErrorSilent; //屏蔽错误
function CheckSoft() {
	Soft_List = [ //待检测的软件列表
		'res://cmd.exe/16/1',
		'res://shell32.dll/2/131',
		'res://C:\\WINDOWS\\explorer.exe/2/143',
		'res://C:\\Program%20Files\\Internet%20Explorer\\Connection%20Wizard\\icwconn1.exe/2/210',
		'res://C:\\Program%20Files\\QQ\\QQRes.dll/2/108',
		'res://C:\\360safe\\360Safe.exe/GIF/172',
		'res://C:\\360safe\\safemon\\loadwdui.dll/PNG/130',
		'res://C:\\Program%20Files\\360\\360Safe\\360hotfix.exe/GIF/172',
		'res://C:\\Program%20Files\\360\\360Safe\\360Safe.exe/GIF/172',
		'res://C:\\Program%20Files\\360\\360Safe\\safemon\\loadwdui.dll/PNG/130',
		'res://C:\\program%20files\\360safe\\360hotfix.exe/GIF/172',
		'res://C:\\program%20files\\360safe\\360Safe.exe/GIF/172',
		'res://C:\\program%20files\\360safe\\safemon\\loadwdui.dll/PNG/130',
		'res://C:\\Program%20Files\\Rising\\Rav\\rssafety.exe/PNG/123',
		'res://D:\\360safe\\360Safe.exe/GIF/172',
		'res://D:\\360safe\\safemon\\loadwdui.dll/PNG/130',
		'res://D:\\Program%20Files\\360\\360Safe\\360hotfix.exe/GIF/172',
		'res://D:\\Program%20Files\\360\\360Safe\\360Safe.exe/GIF/172',
		'res://D:\\Program%20Files\\360\\360Safe\\safemon\\loadwdui.dll/PNG/130',
		'res://D:\\program%20files\\360safe\\360hotfix.exe/GIF/172',
		'res://D:\\program%20files\\360safe\\360Safe.exe/GIF/172',
		'res://D:\\program%20files\\360safe\\safemon\\loadwdui.dll/PNG/130',
		'res://D:\\Program%20Files\\Rising\\Rav\\rssafety.exe/PNG/123',
		'res://E:\\Program%20Files\\360\\360Safe\\360hotfix.exe/GIF/172',
		'res://E:\\Program%20Files\\360\\360Safe\\360Safe.exe/GIF/172',
		'res://E:\\Program%20Files\\360\\360Safe\\safemon\\loadwdui.dll/PNG/130',
		'res://E:\\program%20files\\360safe\\360Safe.exe/GIF/172',
		'res://E:\\program%20files\\360safe\\safemon\\loadwdui.dll/PNG/130',
		'res://E:\\Program%20Files\\Rising\\Rav\\rssafety.exe/PNG/123',
		'res://F:\\Program%20Files\\360\\360Safe\\360hotfix.exe/GIF/172',
		'res://F:\\Program%20Files\\360\\360Safe\\360Safe.exe/GIF/172',
		'res://F:\\Program%20Files\\360\\360Safe\\360Safe.exe/GIF/172',
		'res://F:\\Program%20Files\\360\\360Safe\\safemon\\loadwdui.dll/PNG/130',
		'res://F:\\program%20files\\360safe\\360Safe.exe/GIF/172',
		'res://F:\\Program%20Files\\Rising\\Rav\\rssafety.exe/PNG/123'
	];
	for (i = 0; i < Soft_List.length; i++) {
		SoftExist = 1; //设置初始值
		Tmp = new Image(); //新建Image对象
		Tmp.src = ""; //初始化地址
		Tmp.onerror = function() { //对象错误事件
			SoftExist = 0;
		}
		Tmp.src = Soft_List[i]; //设置连接
		if (SoftExist == 1) { //如果检测到软件存在
			document.write("<font color=#ff0000>"+Soft_List[i]+"  √</font><br>");
		} else {
			document.write("<font color=#0000ff>"+Soft_List[i]+"  ×</font><br>");
		}
		delete Tmp; //删除创建的Image对象
	}
	return 0;
}
CheckSoft();
/*
if (CheckSoft() == 1) { //检测到杀软
	document.write("检测到杀软");
} else { //未检测到杀软
	document.write("未检测到杀软");
}
*/
-->
</SCRIPT>
</HTML>

JavaScript 判断是否运行在本地文件:

<script type="text/javascript">
//判断协议
if (document.location.protocol == 'file:') {
  alert("本地文件!");
}
</script>

留言评论(旧系统):

佚名 @ 2013-03-23 04:09:06

用固有特征判断浏览器比较好吧 UA是可以任意伪造(或者说是修改)的

本站回复:

http协议及浏览器所有特征都可以伪造。