mirror of
https://github.com/bvanroll/college-pentesting.git
synced 2025-08-29 03:52:43 +00:00
205 lines
16 KiB
Markdown
205 lines
16 KiB
Markdown
school project
|
|
|
|
|
|
stap 1 firmware downloaden
|
|
stap 2 extract de binary met binwalk
|
|
stap3:
|
|
de geextracte binary had enkele files die html documents bleken te zijnn en dan een zip file
|
|
de files hielden in:
|
|
19BD0
|
|
19D34
|
|
19E9C
|
|
50040
|
|
en 50040.7z
|
|
|
|
|
|
stap 4:
|
|
ik besloot om de files elk om beurt wat beter te bekijken en te eindigen met de 7zip file omdat deze het interessants leek. Uit de extractie van binwalk daarnet heb ik ook gezien dat meerdere van deze files geclassificeerd werden als html headers. nu als ik een cat zou uitvoeren op een van deze files zou dit een tijdje duren, dus er is waarschijnlijk een groot deel data waar ik niets mee ben. Ik heb dus de tool strings gebruikt op deze file en de uitkomst gepiped naar de naam van het
|
|
bestand met een achtervoegsel .strings
|
|
ik heb hiermee uitgevonden dat 19BD0 een stuk html bezit die gemaakt blijkt te zijn voor het updaten van de firmware:
|
|
|
|
|
|
<html><head><title>Emergency Room</title></head><body><center><h1>UPDATING FIRMWARE</h1><p>This page can be used to update the firmware of this device.</p><form name=upload method=post enctype=multipart/form-data><p><input type=file name=firmware size=30></p><p><input type=submit name=post value='Upload firmware NOW'></p></form></center></body></html>
|
|
<html><head><title>FAILED</title></head><body><center><h1>FAILED TO UPLOAD IMAGE</h1><p>Unable to upload the image, please make sure the uploaded file is the correct image.</p></center></body></html>
|
|
|
|
|
|
|
|
daarna volgde wat ik verwacht een config te zijn voor een html server, of een http header:
|
|
|
|
|
|
HTTP/1.1 200 OK
|
|
Date: Fri, 11 Jul 2008 12:00:00 GMT
|
|
Content-Type: text/html; charset=utf-8
|
|
Content-Length: %d
|
|
Server: Emergency Room
|
|
Conection: Close
|
|
|
|
|
|
en dan meer html
|
|
|
|
|
|
<html><head><title>SUCCESS</title><script>
|
|
var count = 90;
|
|
function init() { countdown(); }
|
|
function countdown()
|
|
count--;
|
|
document.getElementById('WaitInfo').value = count;
|
|
if (count >= 1) setTimeout('countdown()',1000);
|
|
else top.location.href="";
|
|
</script></head><body onload='init()'><center><h1>IMAGE UPLOADED SUCCESSFULLY</h1><p>%d bytes uploaded.</p><p>The WEB server is shuting down and the firmware updating will start immediately. Please <font color=red><strong>DO NOT POWER OFF</strong></font> the device. And please wait for <input type='Text' readonly id='WaitInfo' value='90' size='3' style='border-width:0; color:#FF3030; text-align:center'> seconds...</p></center></body></html>
|
|
|
|
|
|
|
|
hier kunnen we zien dat er een script runnned dat een countdown doet van 90 naar 1 met een timeout van 1000 ms?
|
|
|
|
|
|
dan volgt een stuk config file:
|
|
|
|
bootcmd=tftp
|
|
bootdelay=5
|
|
baudrate=57600
|
|
ethaddr="00:AA:BB:CC:DD:10"
|
|
ipaddr=192.168.0.20
|
|
serverip=192.168.0.3
|
|
|
|
dan enkele lijnen van chars en dan een linux kernel image
|
|
|
|
|
|
de volgende file is 19D34.strings
|
|
|
|
ik denk dat binwalk gewoon alles geextract heeft maar meerdere keren, want deze fil is gewoon hetzelfde als de vorige maar zonder de eerste html pagina
|
|
|
|
dit blijkt ook zo te zijn voor 19e9C, wat ook begint met de html tag maar nu van het laatste stuk html
|
|
|
|
de laatste strings file lijkt gewoon data te zijn, er is niks van code te vinden met enkele greps naar belangrijke woorden, zoals server, html, etc
|
|
|
|
|
|
|
|
nu komen we aan de zip file, specifiek een 7zip, jammer genoeg is dit extracten niet doenbaar, 7zip geeft een error, binwalk heeft dit dus jammer genoeg niet geweldig geextract. Na terug te kijken in de binwalk output zie ik dat er ook nog een stuk compressed data is van het LZMA formaat. en na wat googelen kwam ik een manier tegen om dit te extracten. door eerst het stuk van de lzma uit te knippen (wat gelukkig aan het einde van mijn binary zit) kan ik dit dan extracten. Dit
|
|
kan ik doen door een tool die dd noemt te gebruiken.
|
|
na dd te gebruiken heb ik dus de juiste chunk eruit geknipt, en voor de veiligheid heb ik ook de kernel eruit geknipt. Jammer genoeg geeft lzma een error wanneer ik dit probeer te extracten. Na opnieuw wat te googelen kwam ik op een stackoverflow die zei dat dit kwam omdat je het inleest als een bestand ipv een stream, de oplossing was dus om het in te lezen met een stream wanneer je het probeert te extracten. dit zal nog altijd een error geven, maar je zult je bestand hebben om op voort
|
|
te werken.
|
|
|
|
hierna voerde ik een binwalk uit op het bestand aangezien het veel groter is en daarna ook een strings:
|
|
|
|
output binwalk:
|
|
DECIMAL HEXADECIMAL DESCRIPTION
|
|
--------------------------------------------------------------------------------
|
|
2100864 0x200E80 MySQL MISAM compressed data file Version 8
|
|
3260492 0x31C04C Linux kernel version "2.6.21 (andy@ipcam-linux.alphanetworks.com) (gcc version 3.4.2) #537 Tue Jul 3 11:17:25 CST 2018"
|
|
3261504 0x31C440 CRC32 polynomial table, little endian
|
|
3289600 0x323200 SHA256 hash constants, little endian
|
|
3354536 0x332FA8 Copyright string: "Copyright (c) 2010 Alpha Networks Inc."
|
|
3365554 0x335AB2 Unix path: /net/wireless/rt2860v2_sta/../rt2860v2/common/mlme.c:%d assert SupRateLen <= MAX_LEN_OF_SUPPORTED_RATESfailed
|
|
3365678 0x335B2E Unix path: /net/wireless/rt2860v2_sta/../rt2860v2/common/mlme.c:%d assert ExtRateLen <= MAX_LEN_OF_SUPPORTED_RATESfailed
|
|
3368674 0x3366E2 Unix path: /net/wireless/rt2860v2_sta/../rt2860v2/common/action.c:%d assert pAd->BATable.BAOriEntry[i].Wcid < MAX_LEN_OF_MAC_TABLEfailed
|
|
3368814 0x33676E Unix path: /net/wireless/rt2860v2_sta/../rt2860v2/common/action.c:%d assert pBAEntry->Wcid < MAX_LEN_OF_MAC_TABLEfailed
|
|
3369298 0x336952 Unix path: /net/wireless/rt2860v2_sta/../rt2860v2/common/ba_action.c:%d assert mpdu_blkfailed
|
|
3369394 0x3369B2 Unix path: /net/wireless/rt2860v2_sta/../rt2860v2/common/ba_action.c:%d assert listfailed
|
|
3369486 0x336A0E Unix path: /net/wireless/rt2860v2_sta/../rt2860v2/common/ba_action.c:%d assert mpdu_blk->pPacketfailed
|
|
3369590 0x336A76 Unix path: /net/wireless/rt2860v2_sta/../rt2860v2/common/ba_action.c:%d assert pBAEntry->list.qlen == 0failed
|
|
3369874 0x336B92 Unix path: /net/wireless/rt2860v2_sta/../rt2860v2/common/ba_action.c:%d assert TID < NUM_OF_TIDfailed
|
|
3370370 0x336D82 Unix path: /net/wireless/rt2860v2_sta/../rt2860v2/common/ba_action.c:%d assert pEntryfailed
|
|
3370462 0x336DDE Unix path: /net/wireless/rt2860v2_sta/../rt2860v2/common/ba_action.c:%d assert pAd->BATable.numAsOriginator != 0failed
|
|
3370654 0x336E9E Unix path: /net/wireless/rt2860v2_sta/../rt2860v2/common/ba_action.c:%d assert pAd->BATable.numAsRecipient != 0failed
|
|
3371190 0x3370B6 Unix path: /net/wireless/rt2860v2_sta/../rt2860v2/common/ba_action.c:%d assert pAd->MacTab.Content[Elem->Wcid].Sst == SST_ASSOCfailed
|
|
3371690 0x3372AA Unix path: /net/wireless/rt2860v2_sta/../rt2860v2/common/ba_action.c:%d assert pRxBlk->pRxPacketfailed
|
|
3371842 0x337342 Unix path: /net/wireless/rt2860v2_sta/../rt2860v2/common/ba_action.c:%d assert (0<= pBAEntry->list.qlen) && (pBAEntry->list.qlen <= pBAEntr
|
|
3372002 0x3373E2 Unix path: /net/wireless/rt2860v2_sta/../rt2860v2/common/ba_action.c:%d assert pBAEntryfailed
|
|
3372146 0x337472 Unix path: /net/wireless/rt2860v2_sta/../rt2860v2/common/ba_action.c:%d assert 0failed
|
|
3372234 0x3374CA Unix path: /net/wireless/rt2860v2_sta/../rt2860v2/common/ba_action.c:%d assert (pBAEntry->list.qlen == 0) && (pBAEntry->list.next == NULL)f
|
|
3372382 0x33755E Unix path: /net/wireless/rt2860v2_sta/../rt2860v2/common/cmm_data.c:%d assert pEntryfailed
|
|
3372678 0x337686 Unix path: /net/wireless/rt2860v2_sta/../rt2860v2/common/cmm_data.c:%d assert Length <= MGMT_DMA_BUFFER_SIZEfailed
|
|
3372850 0x337732 Unix path: /net/wireless/rt2860v2_sta/../rt2860v2/common/cmm_data.c:%d assert pTxWIfailed
|
|
3373206 0x337896 Unix path: /net/wireless/rt2860v2_sta/../rt2860v2/common/cmm_data.c:%d assert pProbeEntry != NULLfailed
|
|
3373346 0x337922 Unix path: /net/wireless/rt2860v2_sta/../rt2860v2/common/cmm_data.c:%d assert pProbeEntryfailed
|
|
3373458 0x337992 Unix path: /net/wireless/rt2860v2_sta/../rt2860v2/common/cmm_data.c:%d assert (pktLen > 34)failed
|
|
3373558 0x3379F6 Unix path: /net/wireless/rt2860v2_sta/../rt2860v2/common/cmm_data.c:%d assert pSrcBuffailed
|
|
3373650 0x337A52 Unix path: /net/wireless/rt2860v2_sta/../rt2860v2/common/cmm_data.c:%d assert pRxBlk->pRxPacketfailed
|
|
3373882 0x337B3A Unix path: /net/wireless/rt2860v2_sta/../rt2860v2/common/cmm_data.c:%d assert pAd->FragFrame.LastFrag == 0failed
|
|
3373998 0x337BAE Unix path: /net/wireless/rt2860v2_sta/../rt2860v2/common/cmm_data.c:%d assert pHeaderfailed
|
|
3374154 0x337C4A Unix path: /net/wireless/rt2860v2_sta/../rt2860v2/common/cmm_data.c:%d assert pAd->FragFrame.pFragPacketfailed
|
|
3375390 0x33811E Unix path: /net/wireless/rt2860v2_sta/../rt2860v2/common/rtmp_init.c:%d assert (Length==0) || (pDest && pSrc)failed
|
|
3396606 0x33D3FE Unix path: /net/wireless/rt2860v2_sta/../rt2860v2/common/cmm_asic.c:%d assert BssIndex < 4failed
|
|
3396706 0x33D462 Unix path: /net/wireless/rt2860v2_sta/../rt2860v2/common/cmm_asic.c:%d assert KeyIdx < 4failed
|
|
3401182 0x33E5DE Unix path: /net/wireless/rt2860v2_sta/../rt2860v2/common/cmm_data_pci.c:%d assert QueIdx < NUM_OF_TX_RINGfailed
|
|
3401362 0x33E692 Unix path: /net/wireless/rt2860v2_sta/../rt2860v2/common/cmm_data_pci.c:%d assert pAd->ate.QID == 0failed
|
|
3410462 0x340A1E Unix path: /net/wireless/rt2860v2_sta/../rt2860v2/sta/rtmp_data.c:%d assert 0failed
|
|
3410546 0x340A72 Unix path: /net/wireless/rt2860v2_sta/../rt2860v2/sta/rtmp_data.c:%d assert pRxWI->WirelessCliID == BSSID_WCIDfailed
|
|
3411058 0x340C72 Unix path: /net/wireless/rt2860v2_sta/../rt2860v2/sta/rtmp_data.c:%d assert pAd->SharedKey[BSS0][0].CipherAlg <= CIPHER_CKIP128failed
|
|
3411194 0x340CFA Unix path: /net/wireless/rt2860v2_sta/../rt2860v2/sta/rtmp_data.c:%d assert pTxBlk->MpduHeaderLen >= 24failed
|
|
3411306 0x340D6A Unix path: /net/wireless/rt2860v2_sta/../rt2860v2/sta/rtmp_data.c:%d assert pTxBlkfailed
|
|
3411398 0x340DC6 Unix path: /net/wireless/rt2860v2_sta/../rt2860v2/sta/rtmp_data.c:%d assert (pTxBlk->TxPacketList.Number > 1)failed
|
|
3411514 0x340E3A Unix path: /net/wireless/rt2860v2_sta/../rt2860v2/sta/rtmp_data.c:%d assert (pTxBlk->TxPacketList.Number == 2)failed
|
|
3411634 0x340EB2 Unix path: /net/wireless/rt2860v2_sta/../rt2860v2/sta/rtmp_data.c:%d assert TX_BLK_TEST_FLAG(pTxBlk, fTX_bAllowFrag)failed
|
|
3411758 0x340F2E Unix path: /net/wireless/rt2860v2_sta/../rt2860v2/sta/rtmp_data.c:%d assert pTxBlk->TxPacketList.Numberfailed
|
|
3411990 0x341016 Unix path: /net/wireless/rt2860v2_sta/../rt2860v2/sta/connect.c:%d assert SsidLen <= MAX_LEN_OF_SSIDfailed
|
|
3430642 0x3458F2 Unix path: /net/wireless/rt2860v2_sta/../rt2860v2/os/linux/rt_linux.c:%d assert memfailed
|
|
3430774 0x345976 Unix path: /net/wireless/rt2860v2_sta/../rt2860v2/os/linux/rt_linux.c:%d assert DataLenfailed
|
|
3430870 0x3459D6 Unix path: /net/wireless/rt2860v2_sta/../rt2860v2/os/linux/rt_linux.c:%d assert pDatafailed
|
|
3431114 0x345ACA Unix path: /net/wireless/rt2860v2_sta/../rt2860v2/os/linux/rt_linux.c:%d assert pPacketfailed
|
|
3431210 0x345B2A Unix path: /net/wireless/rt2860v2_sta/../rt2860v2/os/linux/rt_linux.c:%d assert DataSize < 1530failed
|
|
3431314 0x345B92 Unix path: /net/wireless/rt2860v2_sta/../rt2860v2/os/linux/rt_linux.c:%d assert pHeader802_3failed
|
|
3431570 0x345C92 Unix path: /net/wireless/rt2860v2_sta/../rt2860v2/os/linux/rt_linux.c:%d assert pNetDevfailed
|
|
3431858 0x345DB2 Unix path: /net/wireless/rt2860v2_sta/../rt2860v2/os/linux/rt_linux.c:%d assert (prefixLen < IFNAMSIZ)failed
|
|
3431970 0x345E22 Unix path: /net/wireless/rt2860v2_sta/../rt2860v2/os/linux/rt_linux.c:%d assert ((slotNameLen + prefixLen) < IFNAMSIZ)failed
|
|
3432590 0x34608E Unix path: /net/wireless/rt2860v2_sta/../rt2860v2/os/linux/rt_linux.c:%d assert pTaskfailed
|
|
3432682 0x3460EA Unix path: /net/wireless/rt2860v2_sta/../rt2860v2/os/linux/rt_profile.c:%d assert pPacketfailed
|
|
3432778 0x34614A Unix path: /net/wireless/rt2860v2_sta/../rt2860v2/os/linux/rt_profile.c:%d assert dev_pfailed
|
|
3432906 0x3461CA Unix path: /net/wireless/rt2860v2_sta/../rt2860v2/os/linux/rt_profile.c:%d assert pRxBlk->pRxPacketfailed
|
|
3433382 0x3463A6 Unix path: /net/wireless/rt2860v2_sta/../rt2860v2/os/linux/rt_main_dev.c:%d assert pAdfailed
|
|
3435026 0x346A12 Unix path: /net/wireless/rt2860v2_sta/../rt2860v2/ate/common/rt_ate.c:%d assert (BbpValue == 0x04)failed
|
|
3435450 0x346BBA Unix path: /net/wireless/rt2860v2_sta/../rt2860v2/ate/common/rt_ate.c:%d assert RestoreRfICType != 0failed
|
|
3441134 0x3481EE Unix path: /net/wireless/rt2860v2_sta/../rt2860v2/ate/common/rt_qa.c:%d assert bbp_data == valuefailed
|
|
3445578 0x34934A Unix path: /net/wireless/rt2860v2_sta/../rt2860v2/common/rt_rf.c:%d assert (regID <= pAd->chipCap.MaxNumOfRfId)failed
|
|
3450854 0x34A7E6 Unix path: /net/wireless/rt2860v2_sta/../rt2860v2/common/wsc.c:%d assert DataLen < MGMT_DMA_BUFFER_SIZEfailed
|
|
3452768 0x34AF60 Unix path: /etc/Wireless/RT2860STA/RT2860STA.dat
|
|
3452904 0x34AFE8 Unix path: /etc/Wireless/RT2860/RT2860.dat
|
|
3454578 0x34B672 Unix path: /net/wireless/rt2860v2_sta/../rt2860v2/common/wsc.c:%d assert pWscPeer != NULLfailed
|
|
3458626 0x34C642 Unix path: /net/wireless/rt2860v2_sta/../rt2860v2/common/wsc_v2.c:%d assert pEntry!=NULLfailed
|
|
3520063 0x35B63F Neighborly text, "neighbor %.2x%.2x.%.2x:%.2x:%.2x:%.2x:%.2x:%.2x lost on port %d(%s)(%s)"
|
|
3637728 0x3781E0 CRC32 polynomial table, little endian
|
|
3850240 0x3AC000 LZMA compressed data, properties: 0x5D, dictionary size: 1048576 bytes, uncompressed size: 7787520 bytes
|
|
|
|
>
|
|
|
|
als we hiernaar kijken zien we opnieuw een lzma file onderaan die we kunnen extracten, daarboven staat een pak data over unix filesystems met enkele links naar os/linux etc. dit zal dus hetgeen zijn dat de linux kernel start. en de lzma data onderaan is dan hopelijk ons linux fs.
|
|
|
|
nu na dit te extracten was het nog altijd een volledige file, en na het file command hierop te runnen blijkt dit een ASCII cpio archive "(SVR4 with no CRC)" te zijn
|
|
|
|
gelukkig kwam ik op enkele video's die hierover uitleg gaven om het te extracten, aangezien dit een linux filesystem is kan dit problemen geven met uitpakken en mijn fs te overschrijven (paths op deze filesystem zouden niet moeten verwijzen naar de mijne en zo problemen te geven)
|
|
|
|
dit gaf enkele fouten:
|
|
Cannot mknod: Operation not permitted
|
|
deze error kwam voor bij veel van de files in de dev filesystem, dit zal ik later uit moeten zoeken, want als ik hier zelf mee begin te experimenteren dan kan ik mss mijn eigen filesystem wrecken
|
|
|
|
een ls command van de folder struct:
|
|
|
|
cpio git:(master) ✗ ls
|
|
bin dev etc etc_ro home init lib media mnt mydlink proc sbin sys tmp usr var
|
|
|
|
|
|
|
|
en nu kan het interessante beginnen. Ik het toegang tot een linux filesystem waar ik kan zoeken naar verschillende vulnerabilities, bv als men een vaste user account instelt dan kan ik deze hierin vinden. en als men dit niet doet maar wel een reset mogelijkheid geeft zonder dat je ingelogt moet zijn wat kan leiden tot de standaart account die terug komt kan dit ook een vulnerability zijn, demogelijkheden zijn eindeloos.
|
|
|
|
de eerste folder die mijn aandacht trok was een folder genaamt:
|
|
|
|
|
|
mydlink
|
|
|
|
het was vindbaar op de root van het fs en bevatte enkele scripts
|
|
|
|
d
|
|
|
|
een van de eerste scripts of executables was een binary file(dcp) waar ik een grep gedaan had op een strings naar username, en ik kreeg enkele items maar geen aanduidingen, nog geen idee wat deze file doet
|
|
|
|
de tweede file die mij interesseerde was een file genaamt
|
|
mydlink-watch-dog.sh
|
|
|
|
hierin vond ik enkele dingen uit: het systeem gebruikt een apache webserver en
|
|
|
|
|
|
|
|
|
|
|