Nov
4
Author:[sh0wrun],[woyigui]
Date:2009-09-09
声明:该漏洞已报告并已修复,切勿用于非法目的。
原理分析:
我们经常会用到的mail.139.com,由于对邮件正文过滤不严,导致存在xss漏洞。他们尽管实现了对style="xss:expression"进行过滤,但是可以通过添加/* */绕过,如:
同时,经过分析发现,mail.139.com中发送邮件的功能存在CSRF弱点;可以通过Ajax技术获取发送邮件所需要的mid值。另外邮箱的“通信录“中的联系人邮件可以直接通过javascript取出。
满足了编写csrf worm的3个条件,接下来的工作,就是通过编写javascript代码来实现了。
跨站代码:
该部分要实现的功能就是,触发浏览器去读取远端的js脚本,并且执行该脚本:
Date:2009-09-09
声明:该漏洞已报告并已修复,切勿用于非法目的。
原理分析:
我们经常会用到的mail.139.com,由于对邮件正文过滤不严,导致存在xss漏洞。他们尽管实现了对style="xss:expression"进行过滤,但是可以通过添加/* */绕过,如:
<IMG STYLE="xss:expr/*xss*/ession(alert(/xss/))">。
在添加/* */后,该脚本能够在IE浏览器执行。同时,经过分析发现,mail.139.com中发送邮件的功能存在CSRF弱点;可以通过Ajax技术获取发送邮件所需要的mid值。另外邮箱的“通信录“中的联系人邮件可以直接通过javascript取出。
满足了编写csrf worm的3个条件,接下来的工作,就是通过编写javascript代码来实现了。
跨站代码:
该部分要实现的功能就是,触发浏览器去读取远端的js脚本,并且执行该脚本:
Oct
30
今天看到留言,外甥留着,要求我加他友情链接。哈哈,那么,就记录一下。
今天是 2009 年 10 月 30 日。希望他能够有时间多写写文章什么的,并且坚持下去。刚看了一下,他用了baidu的blog,也罢,等以后他自己有点技术了,自己做站吧。
还是很欣慰的~~ 对,他 blog 地址:http://hi.baidu.com/645043054不知道这个地址会用多久。
今天是 2009 年 10 月 30 日。希望他能够有时间多写写文章什么的,并且坚持下去。刚看了一下,他用了baidu的blog,也罢,等以后他自己有点技术了,自己做站吧。
还是很欣慰的~~ 对,他 blog 地址:http://hi.baidu.com/645043054不知道这个地址会用多久。
Oct
14
Oct
6
uchome中的发送邮件函数中,第一次没有进行清空缓冲区,造成发送第一封邮件会造成把页面所有数据发送出去,在 source/function_sendmail.php 文件的 16-18 行:
包含sendmail模版,读取缓冲区数据保存在 $message 变量中,然后清除。其实在include template('sendmail');之前,缓冲区里面应该有其他数据,这样就加在了一起保存在邮件内容中进行发送。
解决方法就是先清空一次缓冲区:
这样读取的话,就是完整的 sendmail 模版数据。
ps: 一开始搞了好久,没找到原因之前,我先向一个垃圾email里面发送一次,其后再向真正的目标邮件发送。比如:
可能是我修改模版太多?
include template('sendmail');
$message = ob_get_contents();
obclean();
$message = ob_get_contents();
obclean();
包含sendmail模版,读取缓冲区数据保存在 $message 变量中,然后清除。其实在include template('sendmail');之前,缓冲区里面应该有其他数据,这样就加在了一起保存在邮件内容中进行发送。
解决方法就是先清空一次缓冲区:
obclean();
include template('sendmail');
$message = ob_get_contents();
obclean();
include template('sendmail');
$message = ob_get_contents();
obclean();
这样读取的话,就是完整的 sendmail 模版数据。
ps: 一开始搞了好久,没找到原因之前,我先向一个垃圾email里面发送一次,其后再向真正的目标邮件发送。比如:
//容错处理
//sendmail("xxx@163.com",$subject, $mail_message);
//发送
if(!sendmail("recv_mail@gmail.com",$subject, $mail_message)) {
ErrView("·发送邮件错误!",0);
}
//sendmail("xxx@163.com",$subject, $mail_message);
//发送
if(!sendmail("recv_mail@gmail.com",$subject, $mail_message)) {
ErrView("·发送邮件错误!",0);
}
可能是我修改模版太多?
Sep
25
记录:
<script>
function htmlspecialchars(string){
var data = [];
for(var i = 0 ;i <string.length;i++) {
data.push( "&#"+string.charCodeAt(i)+";");
}
return data.join("");
}
document.write(htmlspecialchars("@{}<script>javascript alert<\/script>"));
</script>
function htmlspecialchars(string){
var data = [];
for(var i = 0 ;i <string.length;i++) {
data.push( "&#"+string.charCodeAt(i)+";");
}
return data.join("");
}
document.write(htmlspecialchars("@{}<script>javascript alert<\/script>"));
</script>
<script>
function filter (str) {
str = str.replace(/&/g, '&');
str = str.replace(/</g, '<');
str = str.replace(/>/g, '>');
str = str.replace(/'/g, '´');
str = str.replace(/"/g, '"');
str = str.replace(/\|/g, '¦');
return str;
}
alert(filter("url"))
</script>
function filter (str) {
str = str.replace(/&/g, '&');
str = str.replace(/</g, '<');
str = str.replace(/>/g, '>');
str = str.replace(/'/g, '´');
str = str.replace(/"/g, '"');
str = str.replace(/\|/g, '¦');
return str;
}
alert(filter("url"))
</script>
Sep
10
Error:
Soluciones:
Example :
Illegal mix of collations (latin1_swedish_ci,IMPLICIT) and (utf8_general_ci,SYSCONST) for operation 'UNION'
Soluciones:
aes_decrypt(aes_encrypt(version(),1),1)
convert(version() using latin1)
convert(version() using latin1)
Example :
ERROR : http://www.xxx.com/reportaje.php?id=1+and+1=0+union+select+all+1,2,version(),4,5
SOLUCION : http://www.xxx.com/reportaje.php?id=1+and+1=0+union+select+all+1,2,aes_decrypt(aes_encrypt(version(),1),1),4,5
Sep
5
一直没注意 PHP.ini 里面的 disable_functions 开关选项,此选项可关闭一些危险的函数,比如system,exec 等,比如: disable_functions = phpinfo , 如果在文件中调用 phpinfo() 函数,那么在 error_reporting 开启的情况下,会提示如下错误:
目前发现万网主机是屏蔽此函数的。
利用 google: inurl:phpinfo.php 就可查看大量的主机信息,一般为管理员进行调试的时候放上未删除的文件。
Warning: phpinfo() has been disabled for security reasons
目前发现万网主机是屏蔽此函数的。
利用 google: inurl:phpinfo.php 就可查看大量的主机信息,一般为管理员进行调试的时候放上未删除的文件。
Aug
22
在AntiXSS项目中,各个函数均采用白名单方式进行编码,比如一个 EncodeHtml() Java函数:
private static String EncodeHtml(String strInput) {
if (strInput.length() == 0) {
return EmptyString;
}
StringBuffer builder = new StringBuffer(strInput.length() * 2);
CharacterIterator it = new StringCharacterIterator(strInput);
for (char ch = it.first(); ch != CharacterIterator.DONE; ch = it.next()) {
if ((((ch > '`') && (ch < '{')) || ((ch > '@') && (ch < '[')))
|| (((ch == ' ') || ((ch > '/') && (ch < ':'))) || (((ch == '.') || (ch == ',')) || ((ch == '-') || (ch == '_'))))) {
builder.append(ch);
} else {
builder.append("&#" + (int) ch + ";");
}
}
return builder.toString();
}
根据ASCII,先排除了正常使用的字符,其他均进行编码。相比其他采用黑名单编码的自写函数要好的多。。if (strInput.length() == 0) {
return EmptyString;
}
StringBuffer builder = new StringBuffer(strInput.length() * 2);
CharacterIterator it = new StringCharacterIterator(strInput);
for (char ch = it.first(); ch != CharacterIterator.DONE; ch = it.next()) {
if ((((ch > '`') && (ch < '{')) || ((ch > '@') && (ch < '[')))
|| (((ch == ' ') || ((ch > '/') && (ch < ':'))) || (((ch == '.') || (ch == ',')) || ((ch == '-') || (ch == '_'))))) {
builder.append(ch);
} else {
builder.append("&#" + (int) ch + ";");
}
}
return builder.toString();
}







