- 打开了谷歌hack 数据库
- 在谷歌中漫步,看到几个?id=XXX结尾的网址,加’ 出现报错,也有好几个注入点,是打开后就可以看到mysql的报错信息。
其中有一个越南的公益网站,应该是停止维护了,但还是给管理员发送了提醒注入漏洞的邮件。最后选了一个岛国信息网站,开始愉快的一天。
- 直接丢给了sqlmap自动注入,与此同时使用
Nikto 和nmap 进行信息搜集,因为是新手,全是--help看的基础命令
Nikto -h 127.127.127.127
Nmap -v -A 127.0.0.1
用sqlmp -u “http://url” --os-shell ,却发现找到了根目录但是没法上传文件,最后确认是mysql没有写入当前目录的权限。
Sql一直在提示上传失败
[WARNING] it looks like the file has not been written (usually occurs if the DBMS process user has no write privileges in the destination path)
sqlmp -u “http://url” --sql-shell发现是可以用sql-shell。使用select into语句写文件和update语句也是失败,提示
于是通过 select @@datadir 和select @@basedir 获得了mysql安装的目录和数据目录
分别为/usr 和/var/lib/mysql
- 尝试下载apache配置文件和mysql配置文件。
尝试下载Apache 2.2.2的默认配置文件(这个全靠运气了感觉)
不断的尝试
Sqlmap -u “url” --file-read=”文件路径”
得到apache和mysql的文件内容(关键)
Apache配置文件(敏感信息泄露)
- sql注入获取webshell的关键在我看来就是,能找到可以写入文件的目录且有可以执行的方式。
所以在不断切换apache的目录后,终于找到了,可以用目前sql注入点,写入文件,并且访问的目录。
通过不断尝试,sqlmap 手动设置目标目录和上传文件,终于找到了有权限的目录。
上传失败的截图:
成功的截图:
- 中途在上传失败的时候尝试进行源码分析,发现了mysql的数据库密码,但是无法远程连接。
- 也尝试了对10000端口的web服务的密码爆破,使用了burpsuite.
密码字典只是用了sqlmap -u ‘url’ --users 获取的用户名+mysql的配置文件里面的敏感信息。但实际上,只跑了三次,就出现了拦截。
实际返回,被拦截了,所以这个行不通。
- 查看代码的时候发现了一个执行漏洞,也进行了尝试,但sqlmap-shell没法执行update语句,这点我也很疑惑。
从这个代码上来看,一定是有办法把linux的find命令截断,然后执行任意代码的。只需要构造好folder的值。
但是在sqlmap的sqlshell中没法执行upate命令,无法修改这个字段的值。这点我也很困惑,同样困惑的是,既然我有了sqlshell的root命令权限,为啥还要获取mysql的root密码,甚至还得查md5,我自己insert一个不行吗?前辈们的教程都是这样的,盲人摸象。希望能有机会获得注册码进一步学习。
9.后续提权的思路,vsftp 2.2.2,直接在metasploit中search svftp,并没有尝试,作为一个靶机训练,有webshell就可以止步,系统漏洞,这种感觉比较老的系统,也有不少吧。
总结:比较low的一个sql注入点,但是sqlmap无法获取准确的上传路径和执行路径,好在有sqlmap --file-read 所有文件的权限,所以根据apach 2.2.2 centos的常用配置和sql-shell获取的安装目录,猜解apache和mysql的配置文件地址,apache的配置文件里面的敏感信息还是比较多的。
问题:
-
Sql-shell本身就是root权限,为什么还要猜解root登录的密码?即使有了密码不能外网访问有啥用呢?
-
Sqlmap的shell为什么不支持update命令?都能访问读取任意文件了,写入文件的权限,怎么会仅限于mysql的目录和特有的几个目录?